NT服务程序如何断点调试?

sjzxyg 2003-12-26 02:16:57
NT服务程序如何断点调试?
...全文
69 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzd999 2004-01-02
  • 打赏
  • 举报
回复
用SoftIce,利用Debug的代碼生成nms符號文件,然後就可以調試了

不知道或者不了解SoftIce可以到看雪論壇去看看,直接在IE地址欄輸入"看雪學苑"就可以了
sjzxyg 2004-01-02
  • 打赏
  • 举报
回复
兄弟我对调试不怎么懂,请说详细一点,如何转化为nms文件呢,用什么调试工具?
yongdu 2004-01-02
  • 打赏
  • 举报
回复

可以在代码内加上:
DebugBreak();指令。

服务的属性内要选中“允许界面交互”项。

这样启动服务,到了DebugBreak行时,会弹出个异常对话框,选取消,它会弹出缺省的调试器,如果是vc的话,vc就直接打开了,单步几下就到源码了。当然源码要输出debug信息,debug版本缺省就已是这样的。
tryber 2004-01-02
  • 打赏
  • 举报
回复
打开工程,设置相应的断点,
从任务管理器,在进程页中右击进程,选调试,当然这个进程要有SERVICE_WIN32_OWN_PROCESS属性;
高级一点就是在服务程序加启动代码,执行即启动服务;
再高级一点就是用softice.
phiger 2004-01-02
  • 打赏
  • 举报
回复
http://search.csdn.net/expert/topic/50/5005/2003/3/10/1512889.htm
sh210 2004-01-02
  • 打赏
  • 举报
回复
你建立一个批处理文件,内容如下:
f:\Progra~1\Compuw~1\SoftIC~1\SoftICE\NMSYM.EXE MyDrv.sys /translate:source,package,always

注意,要用你的softice的路径:f:\Progra~1\Compuw~1\SoftIC~1\SoftICE\NMSYM.EXE
把MyDrv.sys替换为你的debug的程序名称
sh210 2003-12-26
  • 打赏
  • 举报
回复
sorry,理解错了,如果是你自己的程序,你可以转换你的debug版本程序为一个nms文件,装载,然后就可以源码调试了
sh210 2003-12-26
  • 打赏
  • 举报
回复
提供一个思路:
用softice,
例如:u zwcreatefile,看见如下:
mov eax,00000020,
先找到这个服务的id,可以利用hook service table的方法,把函数的第一个字节后的32位转换为service descriptor table(上例为:20000000) , 然后可以分析这个table得到这个函数的地址,ok,现在可以用(bpx 你找的地址)下断点了
carbon107 2003-12-26
  • 打赏
  • 举报
回复
应用softice软件调试
sjzxyg 2003-12-26
  • 打赏
  • 举报
回复
我也是常用这两种方式调试,可是写日志毕竟不清晰,没有断点调试的便利,而用EXE模式的话,一些特殊的东西在两种工作方式下又不尽相同,很郁闷啊
handsomge 2003-12-26
  • 打赏
  • 举报
回复
调试的时候用EXE模式
nscboy 2003-12-26
  • 打赏
  • 举报
回复
将要调试的信息写到指定的日志文件中
算不算一种调试的方法
sjzxyg 2003-12-26
  • 打赏
  • 举报
回复
是不是无法断点调试?
目录: 本手册的功能 读者对象 本手册的组织结构 排版风格 如何使用本手册 其它相关文件 (外国人就是罗嗦,为了求全,只好随他了。) 第一章 欢迎使用SoftICE 产品概况 介绍SoftICE 介绍Symbol Loader 如何得到客户服务 联系NuMega公司的技术支持中心 第二章 安装SoftICE 介绍 硬件和软件要求 SoftICE显示选择 安装之前 安装 安装之后 配置BOOT。INI以便在多处理器系统中支持单CPU 配置SoftICE在Windows 95下正确载入 通过串行口连接第二台计算机 解决显卡问题 第三章 SoftICE教程 介绍 载入SoftICE 构造GDIDEMO样本程序 装入GDIDEMO样本程序 控制SoftICE屏幕 通过源码跟踪和逐步调试 读本地数据 设定断点和目标断点 设定一个断点 设定STICKY断点 (此处不知STICKY作何解释。待我读到此处时大概会明白) 使用SoftICE命令行信息 使用符号和符号表 设定条件断点 设置BPX断点 编辑断点 设定读写内存断点 第四章 将代码装入SoftICE 调试的概念 准备调试程序 准备调试设备驱动程序和VxDs(虚拟设备驱动程序) 手工装入SoftICE 装入SoftICE for Windows 95 装入SoftICE for Windows NT 构造带有调试信息的程序 使用Symbol Loader转换和载入文件 修改模块设定 修改通用设定 修改编译设定 修改调试设定 指定程序的源文件 删除符号表 在DOS命令行里使用Symbol Loader 使用Symbol Loader的命令行工具 NMSYM命令行的语法 使用NMSYM来转换符号信息 使用NMSYM来装入模块和符号信息 使用NMSYM来装入或导出符号表 使用NMSYM卸载符号信息 使用NMSYM来保存历史记录 关于NMSYM的信息 第五章 SoftICE导航 介绍 呼出SoftICE窗口 启动时禁用SoftICE 使用SoftICE窗口 调整窗口大小 控制窗口 拷贝和粘贴数据 用鼠标输入命令 得到帮助 使用命令窗口 滚动窗口 键入命令 重呼命令 使用运行时宏 将命令窗口的历史缓存保存到文件 相关命令 控制代码窗口 读信息 在代码窗口键入命令 使用本地窗口 控制本地窗口 扩展和分解堆栈 相关命令 使用观察窗口 控制观察窗口 设定观察表达式 读信息 扩展和分解类型表达式 相关命令 使用寄存器窗口 控制寄存器窗口 读信息 编辑寄存器和标志位 相关命令 使用数据窗口 控制数据窗口 读信息 改变内存地址和格式 编辑内存 辅助表达式 相关命令 第六章 使用SoftICE 在跟踪错误时调试多个程序 跟踪错误 Ring-3 32位保护模式(Win32程序) Ring-0 驱动代码(内核模式设备驱动程序) Ring-3 16位保护模式(16位Win程序) 地址内容 使用INT 0x41 .DOT命令 理解从R-3到R-0的转变 第七章 使用断点 第八章 ----------------------------------------------------------- (...很累人那!今天就这些了吧.因为我也是读一些翻译一些,所以有些"向前引用 "的名词术语不知道要如何解释其意义.应该读完再翻译比较好...不过那个时候我 又开学了...呜...一点时间也没有了!) 第七章 使用断点 介绍 SoftICE所支持的断点类型 断点选项 执行断点 内存断点 中断断点 I/O断点 窗口消息断点 理解断点的含义 虚断点 设置断点活动 条件断点 条件断点计数功能 在条件表达式中使用本地变量 在条件断点里引用堆栈 参考 多重断点 所用时间 断点统计 在表达式中引用断点 维护断点 使用内嵌断点 第八章 使用表达式 表达式 操作符 操作符优先级 形成表达式 表达式类型 定制类型 取得符号的数值 间接使用符号 第九章 装入系统组件符号 装入由DLL和EXE文件导出的符号表 使用未命名的入口点

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧