看雪论坛
发新帖

[分享]我自写自用的调试器x32和x64位

sssccc 2017-4-26 20:51 6431

起因:

在以往的逆向中,总觉得OD有些不方便的地方.在调试器中,楼主个人比较喜欢Windbg 这种调试器,窗口想怎么拖,想怎么停靠都行,随心所欲.也没有IDA那种鼠标跟随显示反汇编的小窗口等等,其次就是OD的更新太慢了,几年才更新一次,要等OD64位版本不知道还要等多少年,虽然现在已有64位的调试器x64dbg,更新也很频繁,但跟OD还是有一段距离

综合种种原因,让楼主突然想到毛爷爷曾经说过 自己动手,丰衣足食”,所以楼主决定积极响应号召,就自己动手吧,而且身为一枚逆向人员,有款自己的调试器,在逆向上还是很方便的.于是楼主投入了很多的业余时间,断断续续写了很久….很久

YzDbg介绍:

它是一款类似OD32/64调试器(其中64位版本即能调试32位程序也能调试64位程序), 基于MFC多文档界面开发的,由楼主一人独立完成,开发环境为vs2010,界面全部采用GDI自绘,方便编译,如果用第三方界面库的话,编译太麻烦了(楼主不喜欢,呵呵),而且GDI使用比较灵活想怎么画就怎么画.汇编引擎采用XEDParse, 反汇编引擎采用BeaEngine,模拟器引擎采用unicorn.

因为用OD很多年了,已经养成了一些OD的使用习惯,所以在功能上和用户体验上全部山寨OD,因此大部分功能都是逆向OD而来.

目前OD1的功能,除了Ctrl+A分析功能,还没时间写,其他都写完了,然后看到OD2.0x64dbg中有一些不错的功能也都加进来了,还有一些如IDA的鼠标跟随显示小窗口,硬件条件断点,类似CE的地址监视功能,也都写了.

之后又看到<软件保护及分析技术>一书中提到的伪调试引擎和模拟器, 这两功能觉得不错也写了, 伪调试引擎可以用来过一般的壳检测(vmp),至于驱动保护,那就得自己写驱动过了.而模拟器可以用来模拟执行代码,同时不影响真实的执行环境,用来跟踪调试还是不错的.

总之就是看到什么功能好加什么功能,尽量给调试带来方便,呵呵

至于反编译的功能,本来想加入Snowman,但是Snowman反编译出来的代码效果不好,IDAF5没法比..所以还是不加了..

另外支持的系统有xp32/64,win2003 32/64, win2008 32/64win7 32/64,win8 32/64,win10 32/64, win Vista 32/64,这些楼主都简单的测试过,不过win7 64位因为楼主一直用这个系统,所以基本上这个系统没什么问题,其他系统就不好说了,毕竟其它系统只是简单的测试

YzDbg已实现的功能:

基本的调试功能(单步,忽略异常单步,执行到返回,自动步进/步过等等)

支持int3断点,硬件断点,内存断点,消息断点等

支持源码调试

支持解析pdb符号文件,解析导入库文件,解析API参数

支持插件

支持脚本,脚本是在ODbgScript源码的基础上改的,所以用法跟ODbgScript一模一样,应该也能兼容大部分的OD脚本,这里对ODbgScript的作者表示感谢

支持模拟器调试,能够在模拟器上进行模拟调试,用来分析算法还是可以的

支持调试dll

支持解析map文件,ida或者vs

支持命令行,目前支持的命令有 ddumpdbdwdddqdf32df64df80dadudutf8dasmbpbcmrmwmc,若大家需要,后续可以再继续添加命令,不过楼主一般都只用dd..

支持简单的条件表达式,表达式的用法跟OD一样

下面给出支持的表达式运算符

( )[ ]!~*/%+-<<>><<=>>===!=&^|&&||insfind(BYTE)(CHAR)(WORD)(SHORT)(DWORD)(INT) (DWORD64)(INT64)(FLOAT)(DOUBLE)(ASCII)(UNICODE)(WINTEXT)

下面给出支持的表达式运算操作数

常规寄存器,eax,ax,ah,al

如果表达式中出现符号,如api,会自动把符号转换成地址,进行计算

64位版本的操作数 支持 r8-r15.

这里注意下,表达式中若有数字,将会视为十六进制数

给个例子如: [eax] == 00401000

还有很多功能,这里不一一介绍,大家可以自己去发现 ^_^

用法跟OD一模一样,简单的说,你会用OD,你就会用它,如果你不会用OD,可以百度OD的用法

至于ODCtrl+A代码分析功能,现在已经在写着,争取在下个版本中加进来,还有什么功能呢?暂时没想到,以后想到什么再加什么吧….


Bug或建议反馈:

因为以前都是楼主一个人在用,能发现的bug有限,而且64位版本是在32位版的基础上修改而来,可能Bug32位版多,而且很多功能楼主仅仅是写了出来,但是都没用过,如消息断点等.因此大家在使用中若是发现有能重现的bug,请及时联系楼主反馈,楼主将会尽快修复

如果大家有好的建议或意见,也可以联系楼主


可以直接回帖进行反馈,也可以用如下方式进行反馈

Q411738567

邮箱:411738567@qq.com

因为楼主时间比较紧,有事请留言说明,看到会回复,望体谅,如果是bug,请尽量描述详细,谢谢


图片展示:

这里以64位版本为例,上几张图片

1.界面介绍


2.显示模式介绍


3.源码调试


4.模拟器调试



由于论坛的上传功能太慢了,一直上传不上来,压缩包切割成5M也很慢!所以只能用网盘的形式提供下载了,没办法

下载地址

https://pan.baidu.com/s/1kUGXhL9


本主题帖已收到 2 次赞赏,累计¥2.00
最新回复 (131)
1
BinGzL 2017-4-26 21:03
2
很久不用od了,更新不易  帮你顶顶
bambooqj 2017-4-26 21:08
3

就佩服你们这群没我帅但是叼大的


没有插件文档...- - 


伪调试引擎试了一下..没有成功过掉壳..0 0


推荐师傅修改一下.进程退出之后 状态改为进程终止..当调试器被壳检测到之后 仍在运行中..

看到了Sign文件 但是 没有找到查到的结果再那里显示..

可能是 没有加入分析功能的缘故..字符串搜索有些问题搜不全..常量搜索也有bug 搜不到东西.字符串搜索 再第一次搜索之后 第二次再搜索无反应.

暂时 只找出了这些问题.条件断点之类的 没有测试..

感谢师傅 提供工具..

2
pxhb 2017-4-26 21:14
4

哇,好厉害,这得要多久才能完成

既然其他地方都可以仿od,那最最关键的一点,如果支持od的插件,就爽了,

编译出来的文件不知道怎么会这么大,一个小插件就是5MB以上,我觉得应该会很小的

能有一个类似或者仿写的反调试插件就好了类似od的strongOD x64dbg的ScyllaHide

当然比其他调试器好的地方也很多,如果后期大家重视一起去修改,增加一些插件,或者如果可能的话兼容od插件,要不了多久,大家都会去用了

ssarg 2017-4-26 21:19
5
不错,支持。
我觉得当个白帽子不错,一边玩技术,一边挣钱。
1
破解pj 2017-4-26 21:23
6
厉害  不错  支持下,看下好使用不
寧靜致遠 2017-4-26 21:27
7
厉害了我的哥。
AperOdry 2017-4-26 21:35
8
发现一把轩辕剑,谢谢楼主的神器
jiqigouer 2017-4-26 21:58
9
强大,专门登录支持一下楼主,能自己写调试工具我觉得很厉害了。希望楼主能不断完善自己调试器,超越OD,另外非常感谢分享。
sssccc 2017-4-26 21:59
10

首先感谢大家的支持
感谢3楼的测试,你用的可能是伪调试引擎模式,这个模式下调试器没有捕捉进程退出事件,之前想过钩API来拦截进程退出事件,不过怕成为一个检测点.所以就不拦截了...你说被壳检查到了,能否告知下是什么壳?我加个壳试试.然后那个Sign文件,你说的是ShellSign.txt这个吗? 这个我从查壳工具找的文件,是壳或编译器的特征码,显示在模块窗口->编译器/外壳 栏中,现在只有32位的特征码,64位还没发现,可能是我没仔细找吧..你说的其它问题能否说得再详细些?我这用着没什么问题啊...


回4楼,兼容OD插件不好做,插件接口不一样.

反调试插件的话,等我有时间会写一个类似sod的插件

然后文件大是因为mfc的关系,编译中我选择的是"在静态库中使用 MFC",所以没办法,所以比较大.呵呵


回9楼,有时间就会一直完善的.

至于插件文档,如果大家有需要,我会整理出来

蚯蚓降龙 2017-4-26 22:49
11
蛮像OD的咯,多谢分享
chinasmu 2017-4-27 01:43
12
对于楼主,我只能说666
1
RichardE 2017-4-27 02:12
13
谢谢分享
cshcmq 2017-4-27 07:38
14
精神可以,不过我关心的是你的重点--过游戏保护成功,产生money没有?
蓝蓝深海 2017-4-27 08:14
15
厉害厉害    感谢分享       
不追浮云的人 2017-4-27 08:38
16
这么强大,mfc的图标该美化一下,
1
lhglhg 2017-4-27 08:56
17
如果能过掉强壳。就厉害了。。
gaoan 2017-4-27 10:20
18
看看楼主  看看自己    唉  只能膜拜
ssarg 2017-4-27 11:03
19
gaoan 看看楼主 看看自己 唉 只能膜拜
看看楼主    看看自己        唉    只能膜拜-------------

-------》自己,哈哈,还是自己比楼主帅!
longloo 2017-4-27 12:00
20
以后果断扔掉OD了,  直接用楼主的神器
空白即是正义 2017-4-27 12:07
21
很厉害吖  mark
superdos 2017-4-27 14:57
22
好样的!!!
8
kanxue 2017-4-27 14:58
23
给我份简历,我帮你推荐下:kanxue@pediy.com
Rookietp 2017-4-27 15:57
24
下载简单的使用了下,风格个人比较喜欢,特别是能同时调试x32  and  x64,非常方便。希望楼主能坚持更新,修复BUG。加强反反调试。最后希望楼主找份好工作,月入上百万,从此走上巅峰。
kingswb 2017-4-27 16:17
25
太牛了,开源下就更好了
AperOdry 2017-4-27 16:34
26
老大,能否批量设置Threads状态,如OD插件里面的Suspend  All  和Running  All  ,附加某游戏或者某暗装调试用处很大
sssccc 2017-4-27 21:25
27
kanxue 给我份简历,我帮你推荐下:kanxue@pediy.com
已发送,sssccc那个邮件就是,  感谢坛主
sssccc 2017-4-27 21:28
28
ssarg 看看楼主 看看自己 唉 只能膜拜------------- -------》自己,哈哈,还是自己比楼主帅!
还是你们比较帅      楼主很丑,可是楼主很温柔
sssccc 2017-4-27 21:29
29
AperOdry 老大,能否批量设置Threads状态,如OD插件里面的Suspend All 和Running All ,附加某游戏或者某暗装调试用处很大
你是指在线程窗口中加入一个  暂停全部  和  恢复全部  的功能吗?
sssccc 2017-4-27 21:44
30
不追浮云的人 这么强大[em_63],mfc的图标该美化一下,[em_13]
想过修改..但是找不到合适的图片,也不知道改成什么样子
AperOdry 2017-4-27 22:44
31
sssccc 你是指在线程窗口中加入一个 暂停全部 和 恢复全部 的功能吗?
对啊,比如DXF,线程就几十个,线程之间又有通信,一个个的恢复线程游戏就崩了,几乎内心是崩溃的
jiqigouer 2017-4-27 23:00
32
楼主,在OD里点击汇编某条代码右键”断点“——”运行到选定位置“,快捷键是F4键,希望你能增加这个功能啊,我找了半天都没找到,这个功能在跳出一段循环代码段下很有用啊
sssccc 2017-4-27 23:27
33
AperOdry 对啊,比如DXF,线程就几十个,线程之间又有通信,一个个的恢复线程游戏就崩了,几乎内心是崩溃的
记下了,下个版本会加进去
3
malokch 2017-4-27 23:30
34
这个工作量很大,很好很强大,好鬼久不弄windows上的东西了,不明觉厉
sssccc 2017-4-27 23:33
35

jiqigouer 楼主,在OD里点击汇编某条代码右键”断点“——”运行到选定位置“,快捷键是F4键,希望你能增加这个功能啊,我找了半天都没找到,这个功能在跳出一段循环代码段下很有用啊

这个功能已经有了
先暂停再右键就会出现,  因为运行的时候,不能修改EIP,所以右键就看不到
还有,暂停之后,选择eip那行右键也不会出现,因为你不可能在eip那行选择  "运行到选定位置吧"

jiqigouer 2017-4-27 23:39
36
sssccc jiqigouer 楼主,在OD里点击汇编某条代码右键”断点“——”运行到选定位置“,快捷键是F4键,希望你能增加这个功能啊,我找了半天都没 ...
已经看到了,  还是对这款调试器不熟,谢谢提醒了。
bambooqj 2017-4-28 01:00
37

sssccc 首先感谢大家的支持感谢3楼的测试,你用的可能是伪调试引擎模式,这个模式下调试器没有捕捉进程退出事件,之前想过钩API来拦截进程退出事件,不过怕成为一个检测点 ...

VMP  SE  我这边都过不去  -  -  ....


看了一下 确实是师傅说的问题.伪调试模式下的事情...


ShellSign.txt 这个 我觉得师傅可以去调用detect it easy的支持x64 与 x86  不过如果师傅要用的话 解析文件好像挺麻烦的...

K老板聊天的时候说模拟运行引擎师傅可以考虑下gdb 支持回溯.师傅可以试下...总觉得有些我们动动嘴..老板写断手的感觉 2333333333


sssccc 2017-4-28 02:00
38

bambooqj sssccc 首先感谢大家的支持感谢3楼的测试,你用 ...

你说的情况,  我专门去吾爱下了一个vmp3.0,    壳会自己抛出异常来进行反调试检测,  你一定是按了F9,  调试器处理了异常导致的!
这个时候需要  shift+F9,  跳过这个异常,就给壳处理就OK了.  目前过壳的反调试没什么,因为刚放出来的调试器嘛,还没有针对性的检测,之后就难说了,所以后续我会把插件接口整理处理,我就修修bug,增加点必要的功能好了...
detect  it  easy  这个有空研究下,然后你说的gdb,这个不是Linux下的调试器吗?

我也放张图,  然后睡觉觉 

sssccc 2017-4-28 02:07
39
cshcmq 精神可以,不过我关心的是你的重点--过游戏保护成功,产生money没有?[em_28]
给你一个迷之微笑    你猜 
bambooqj 2017-4-28 04:36
40

sssccc bambooqj sss ...

-  -    为啥我的就不行...


Z大破解的2.13.5 老板测试下.我就是shift+f9  不行 然后 勾选忽略0000000000-ffffffffff的异常 - - 还是不对.

伪调试引擎已经勾选.. 

有关GDB:https://www.ibm.com/developerworks/cn/linux/l-cn-gdb7rd/

K老板说的这个我也不太清楚.

cshcmq 2017-4-28 08:57
41
sssccc 给你一个迷之微笑 [em_41] 你猜
X悼热门那几款,数钱到手软,还找什么工作。
三千烦恼 2017-4-28 09:36
42
这。。。这还要啥OD2.0,  你就是了!
kanxue零零七 2017-4-28 12:47
43
牛逼,  你这感觉不用愁找工作了吧
caolinkai 2017-4-28 12:55
44
厉害啊。。。楼主肯定是老司机
sssccc 2017-4-28 12:59
45

bambooqj sssccc ...

我测试过了,不论是创建调试,还是附加调试,都没问题.    我的系统是win7  x64位,  你的系统应该是win8或win10,那些系统没测试过

kanxue零零七 2017-4-28 13:03
46
给你推荐一个高级c++开发工程师,可以接受么   
sssccc 2017-4-28 13:03
47
kanxue零零七 牛逼, 你这感觉不用愁找工作了吧
愁啊...  现在感觉pc端不好混了,  估计得自学下安卓逆向,有机会就转安卓算了... 
sssccc 2017-4-28 13:08
48

kanxue零零七 给你推荐一个高级c++开发工程师,可以接受么  [em_39]

可以加我QQ,或则你给一个联系方式,我联系你.了解下

5
china 2017-4-28 14:09
49
真心希望这个工程能够持续更新完善下去,无论LZ去哪工作,希望这个调试器能够做的更好,走的更远。
evalzeroday 2017-4-28 15:24
50
不错不错
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.015, SQL: 10 / 京ICP备10040895号-17