首页
社区
课程
招聘
[转]用Soft-ICE实现源码级调试
发表于: 2004-8-26 19:36 4266

[转]用Soft-ICE实现源码级调试

2004-8-26 19:36
4266
作者:罗云彬
在 Windows 编程中,Soft-ICE 是一件必不可少的调试工具,但 Windows 程序的编程中有很多的时候是和数据结构和 API 打交道,经过编译以后,原来的 mov stRect.left,eax 之类的代码也就变成了 mov [xxxx],eax,invoke UpdateWindow,hWnd 之类的语句也就变成了 push [xxxx]/call [xxxxx] 之类的语句,如果你不记的源程序了,你就根本无法知道你在向什么数据写或者调用什么 API,在 C++ 编程的时候,我们都可以进行源代码级别的跟踪调试,但在汇编中,这可能吗?
   答案是可以的,用 Soft-ICE 就可以实现,本文讨论使用 Masm 的情况下用 Soft-ICE 实现源码调试,具体的实现如下:

   首先,在编译的时候要生成带符号信息的 Object 文件,这需要打开 ML 程序的两个选项

ML /coff /Zi ...

/coff 告诉编译器产生符号调试格式的 Object 文件。
/Zi 使 Object 文件中包括符号调试信息。

   然后也要设置 Link 文件,因为 Soft-ICE 使用 CodeView 格式的调试信息,所以 Link 也要包括下面的选项

Link /DEBUG /DEBUGTYPE:CV ...

/DEBUG 选项告诉 Link 在 exe 文件中包含调试信息。
/DEBUGTYPE:CV 当然是调试信息要用 CodeView 格式啦。

   最后,就是如何使用 Soft-ICE 了,如果要使用符号调试功能,你不能再用 Loader32.exe 程序来装入 exe 文件,而是必须用符号转换程序 nmsym,使用方法是在命令行中打入 nmsym /translate:source,package,always /source:. /load:execute,break 你的exe文件,你可以把它编写成一个 bat 文件如下 nmsym /translate:source,package,always /source:. /load:execute,break %1,假定文件名为 debug.bat ,然后你就可以用 debug xxx.exe 来享受源代码调试的乐趣了。
   别的一些必要的设置:你必须把 Soft-ICE 的目录和 Masm 的 bin 目录设置到 path 中,因为这些路径中还有些文件要用到。

[课程]Linux pwn 探索篇!

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
收藏,感谢楼主
2004-8-27 10:20
0
游客
登录 | 注册 方可回帖
返回
//