首页
社区
课程
招聘
[原创]WTDebug 可以运行跟踪的注入型调试器
发表于: 2011-6-13 11:20 5776

[原创]WTDebug 可以运行跟踪的注入型调试器

2011-6-13 11:20
5776
下载地址
        http://www.rayfile.com/zh-cn/files/d9aabb28-956b-11e0-aafd-0015c55db73d/

        这个调试器其主要功能就是跟踪,实际上不是用来调试的,做了个调试器的外壳是只是为了好玩。

        因为要调试,是需要暂停其他线程,只运行一个线程,慢慢调试,但是我使用的是多线程同时跟踪,如何同时调试多个线程?人毕竟不是机器人,我也只能跟踪所有的线程了,所以你可以看到,点“自动跟踪”或者“运行”以后,你将无法再单步调试。

运行方式有3种:
        第一种是注入正在运行的进程,点“文件”->“注入EXE”,选择你要注入的进程,确定,然后工作线程注入了目标进程,这时候已经自动进入“自动跟踪”模式,你不能单步调试,当运行一段时间以后,你就可以获取跟踪的结果了,点“调试”->“导出EXE”,跟踪到的进程运行过的代码,将会以可执行文件的方式保存到 C:\export 文件夹中,当前这个文件都只是可执行文件的部分,也就是曾经运行过的部分的代码,而不是真的可以执行。同时会导出用于 IDA 分析的 IDC 脚本文件,用 IDA 载入可执行文件,然后再导入 IDC 脚本,就可以用 F5 分析了。
        第二种是直接点“文件”->“打开EXE” 点“调试”->“运行”,然后程序会正常的运行,然后点“调试”->“自动跟踪”,就开始了自动跟踪,当运行一段时间以后,你就可以获取跟踪的结果了,点“调试”->“导出EXE”,跟踪到的进程运行过的代码,将会以可执行文件的方式保存到 C:\export 文件夹中,当前这个文件都只是可执行文件的部分,也就是曾经运行过的部分的代码,而不是真的可以执行。同时会导出用于 IDA 分析的 IDC 脚本文件,用 IDA 载入可执行文件,然后再导入 IDC 脚本,就可以用 F5 分析了。
        第三种是比较笨的方法了,点“文件”->“打开EXE” 点“调试”->“自动跟踪” 这样它会将启动过程也跟踪进去,速度将会很慢,我是不推荐的。

其原理是将运行过的代码提取出来,其他没有运行过的代码都 NOP 掉,然后DUMP为可执行文件,顺便生成一个IDC脚本,可以记录下很多有趣的东西,然后放到IDA中分析。

尝试了内存断点来做,发现要花很多时间而且不一定能做好,最后改用TF来做,速度是比较慢,但是如果自动分析跳过系统DLL那么速度将会快很多,而现在是跟踪进入了系统DLL了!使用硬件断点+INT3断点来步过系统DLL,那速度将会提高很多,这个将来再做吧,或者你能帮我做做,^_^

在这里感谢一下,exile 和 掘墓人,exile 的HOOK代码介绍了一种非常规的Debug方式,掘墓人做的调试器让我节省了很多时间。

我曾经尝试过代替 IDA 来做语法分析,结果发现太复杂了,而且太浪费时间,所以我决定借用 IDA 的力量,这样我就可以节省很多工作。

好了,有什么问题,再跟我说,前段时间都比较忙,基本都没什么时间,现在比较轻松了,呵呵。

如果你要加入我的开发团队,让程序更加完善,欢迎加入
http://hi.baidu.com/chinahanwu/blog/item/3a2c6831cc6f2b08eac4af58.html

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
实在不知道这有什么用。按照第二种方法生产的exe文件,前面有n个nop,后面就一部分导入表。IDA无法分析函数,自然无法F5.
2011-6-13 12:22
0
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
导出的 exe 目前不是很能兼容 IDA ,不过这些也好解决,看看他的算法是怎么样的,慢慢修改,但是有趣的是即使不能使用 F5 分析的部分也能使用图形分析,我DUMP的是有内存空间的可执行文件,但是有些程序不是在自己的内存空间运行,而是在堆栈中运行,比如 QQ 就是如此,我下一步得导出这些在堆栈中执行的代码,不论什么事情,都不可能一下就成功,都得慢慢的改进,是吧?
2011-6-13 16:25
0
游客
登录 | 注册 方可回帖
返回
//