首页
社区
课程
招聘
[原创]WindTrudging反汇编跟踪OD插件
发表于: 2010-12-13 21:35 15586

[原创]WindTrudging反汇编跟踪OD插件

2010-12-13 21:35
15586
WindTrudging可以清晰的看到程序的执行过程,因为OD自带的运行跟踪得到的数据太过繁杂,本人不是太明白OD如何使用运行跟踪来理解程序的执行过程,所以才有了您现在看到的这个插件。被调试程序程序运行完成之后,加载WindTrudging插件,点击”开始“按钮,就开始拦截被调试程序的运行过程,然后再正常操作被调试程序,比如点击被调试程序的某个按钮,这样WindTrudging插件就拦截了按钮运行的过程(注意:只是拦截了当前反汇编窗口代码块的运行过程,系统调用以及DLL调用不被拦截,在将来的版本中可以考虑对DLL的拦截,目前不行),等程序停止拦截之后,点击”分析“按钮,即可分析出跟踪出的CALL调用,以及调用参数(目前此功能不完善),本来还想做语法分析的,不过相当复杂,将来版本可能会做,分析出的代码语法很简单,标志位用b_XXX表示,CALL调用用●符号表示,JMP用goto表示,堆栈用Stack[]表示,内存区域用Mem表示,自动添加标签进分析代码,最好用我那智能搜索字符串的东东来分析。将来可能还要将OD的分析结果导入到我的分析中。还要将结果通过易懂的方式表达。总之还有很多没做,时间有限,先看看大家的建议如何。欢迎大家加入WindTrudging项目组。
下载地址
http://www.rayfile.com/zh-cn/files/c9e2dc11-072b-11e0-9248-0015c55db73d/

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (33)
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
刚刚完成一个简单的框架,真希望有志同道合的朋友一起完成。测试过程,出现BUG是非常正常的情况,不要尝试测试加壳的程序。
2010-12-13 21:40
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
3
先顶帖!过路必回
2010-12-14 01:02
0
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
得到的结果形如:
Fun_417528//run:5
{
417528        esp-=4;Stack[esp]=esi;//esi=FFFF0000//run:5
417529        ●机器码.0041f228;//0041F228=机器码.0041F228//run:5
41752e        if ((char) Mem[eax+0x14] == 0x0) {b_ZF=1;}else{b_ZF=0};//Mem[0016639C]=00//run:5
417532        esi= Stack[esp+0x8];//esi=FFFF0000堆栈 Stack[0012FC60]=00000000//run:5
417536        if (b_ZF==0) goto short 机器码.0041755b;//0041755B=机器码.0041755B跳转未实现//run:5
417538        if (esi==0) {b_ZF=1;}else{b_ZF=0};//esi=00000000//run:5
41753a        if (b_SF==b_OF) goto short 机器码.00417544;//00417544=机器码.00417544跳转已实现//run:5
417544        ●机器码.004171be;//004171BE=机器码.004171BE//run:5
417549        if (eax==0) {b_ZF=1;}else{b_ZF=0};//eax=0042FFE0 (机器码.0042FFE0), ASCII "H5B"//run:5
41754b        if (b_ZF==1) goto short 机器码.0041755b;//0041755B=机器码.0041755B跳转未实现//run:5
41754d        esp-=4;Stack[esp]= Stack[esp+0x10];//堆栈 Stack[0012FC68]=0012FD0C//run:5
417551        edx= Mem[eax];//edx=0012FD28Mem[0042FFE0]=00423548 (机器码.00423548)//run:5
417553        ecx=eax;//ecx=0000000Eeax=0042FFE0 (机器码.0042FFE0), ASCII "H5B"//run:5
417555        esp-=4;Stack[esp]=esi;//esi=00000000//run:5
417556        ● Mem[edx+0x70];//Mem[004235B8]=004175CB (机器码.004175CB)//run:5
417559        goto short 机器码.0041757c;//0041757C=机器码.0041757C//run:5
41757c        esi=Stack[esp];esp+=4;//esi=00000000堆栈 [0012FC58]=FFFF0000//run:5
41757d        return;//返回到 77D31923 (USER32.77D31923)//run:5
}
Fun_4175cb//parent:417556ESP:12fc4c//run:5
{(0,12fd0c)(0,12fd0c)(0,12fd0c)(0,12fd0c)(0,12fd0c)
4175cb        esp-=4;Stack[esp]=ebp;//ebp=0012FC8C//run:5
4175cc        ebp=esp;//ebp=0012FC8Cesp=0012FC48//run:5
4175ce        esp-=0x20;//esp=0012FC48//run:5
4175d1        esp-=4;Stack[esp]=ebx;//ebx=0012FD0C//run:5
4175d2        esp-=4;Stack[esp]=esi;//esi=00000000//run:5
4175d3        esi= Stack[ebp+0xc];//esi=00000000堆栈 Stack[0012FC54]=0012FD0C//run:5
4175d6        ebx=ebx;b_CF=0;b_OF=0;;//ebx=0012FD0C//run:5
4175d8        if (esi == ebx) {b_ZF=1;}else{b_ZF=0};//esi=0012FD0Cebx=00000000//run:5
4175da        esp-=4;Stack[esp]=edi;//edi=00000000//run:5
4175db         Stack[ebp-0x4]=ecx;//堆栈 Stack[0012FC44]=0042FFE0 (机器码.0042FFE0), ASCII "H5B"ecx=0042FFE0 (机器码.0042FFE0), ASCII "H5B"//run:5
4175de        if (b_ZF==1) goto 机器码.0041770c;//0041770C=机器码.0041770C跳转未实现//run:5
4175e4        eax= Stack[ebp+0x8];//eax=0042FFE0 (机器码.0042FFE0), ASCII "H5B"堆栈 Stack[0012FC50]=00000000//run:5
4175e7        eax-=ebx;//eax=00000000ebx=00000000//run:5
4175e9        if (b_ZF==1) goto short 机器码.00417660;//00417660=机器码.00417660跳转已实现//run:5
417660        ●机器码.00401616;//00401616=机器码.00401616//run:5
417665        if ( Mem[0x432004] == 0x333) {b_ZF=1;}else{b_ZF=0};//Mem[00432004]=00000501//run:5
41766f        edi=eax;//edi=00000000eax=0012FE6C//run:5
417671        if (b_CF==0) goto short 机器码.00417691;//00417691=机器码.00417691跳转已实现//run:5
417691        if ( Stack[ebp+0x8] == ebx) {b_ZF=1;}else{b_ZF=0};//堆栈 Stack[0012FC50]=00000000ebx=00000000//run:5
417694        if (b_ZF==0) goto short 机器码.0041770c;//0041770C=机器码.0041770C跳转未实现//run:5
417696        eax= Stack[ebp-0x4];//eax=0012FE6C堆栈 Stack[0012FC44]=0042FFE0 (机器码.0042FFE0), ASCII "H5B"//run:5
417699        if ( Mem[eax+0x20] == ebx) {b_ZF=1;}else{b_ZF=0};//Mem[00430000]=00000000ebx=00000000//run:5
41769c        if (b_ZF==1) goto short 机器码.0041770c;//0041770C=机器码.0041770C跳转已实现//run:5
41770c        eax=eax;b_CF=0;b_OF=0;;//eax=0042FFE0 (机器码.0042FFE0), ASCII "H5B"//run:5
41770e        edi=Stack[esp];esp+=4;//edi=0012FE6C堆栈 [0012FC1C]=00000000//run:5
41770f        esi=Stack[esp];esp+=4;//esi=0012FD0C堆栈 [0012FC20]=00000000//run:5
417710        ebx=Stack[esp];esp+=4;//ebx=00000000堆栈 [0012FC24]=0012FD0C (0012FD0C)//run:5
417711        esp=ebp;ebp=Stack[esp];esp+=4;////run:5
417712        return;//返回到 00417559 (机器码.00417559)//run:5
}

这个东东没人需要吗?唉,伤心了。
2010-12-14 09:01
0
雪    币: 260
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有需求,支持下,哈!
2010-12-14 09:27
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
产品虽然还不成熟!但有想法能动手就是好的。顶下!
2010-12-14 10:07
0
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢支持咯 我又有点信心了,这个东西专门是用来研究程序算法的,所以,要加入很多语法分析的东西额,想象一下和F5一样分析出C代码,多令人激动啊。而且属于动态分析,可以得到IDA无法得到的很多数据,可以分析得比IDA更准确呢。
2010-12-14 10:48
0
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
支持一下,希望继续更新完善
2010-12-14 11:10
0
雪    币: 223
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
不错,对话框能大点就好了
2010-12-14 12:25
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
关键是太乱了,还不如 OD 自带的好用,但希望楼主不要放弃,继续哦
2010-12-14 15:00
0
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
11
不错,支持一个,LZ继续努力啦~~~
2010-12-16 21:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
很感谢啊,就是窗口小了点!
2010-12-17 00:08
0
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
窗口是小了点,因为现在正是刚刚开始呢,要做的东西还多着呢,比如自动分析调用参数,自动语法分析,语法高亮等等,我这几天在想着语法分析怎么弄呢,现在这个只是有个基本框架,分析什么的都不完善呢,只要有人理解我做这个程序的意义,我就已经很高兴了。
2010-12-17 00:32
0
雪    币: 768
活跃值: (515)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
14
这东东给力,老早就想有这么个插件了,找时间试试~
楼主继续努力~
有时间一起加入:)

弱的问一名:开源吗?
2010-12-17 21:07
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
15
以前我记得LZ开有一个google项目的,现在关了?
2010-12-17 21:57
0
雪    币: 768
活跃值: (515)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
16
哈哈,在unpack上等你呢~
2010-12-17 22:42
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
17
已经回复了,主要的内容已经说了,剩下的就得自己发挥了。
2010-12-18 16:22
0
雪    币: 1231
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
等语法分析做好了就开源,大家一起来优化,google项目是什么?我记得我开的是WindTrudging项目,本来计划做个WindTrudging项目组的QQ群,源代码在群中发布,这样比较高效率哈,就是不知道是否有人支持。
2010-12-20 18:18
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
19
支持SVN+QQ群~
2010-12-20 18:41
0
雪    币: 768
活跃值: (515)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
20
QQ群有局限性,还是Google比较好吧~:)开源嘛,就要搞的像模像样的:)
继续支持楼主~
2010-12-20 19:32
0
雪    币: 425
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主能搞个群,大家一起讨论怎么如何啊,?
2010-12-22 20:42
0
雪    币: 425
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主能搞个群,大家一起讨论怎么如何啊,?
先群吗,然后才是开源嘛
2010-12-22 20:44
0
雪    币: 1361
活跃值: (1052)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
强烈支持 顶!  其实我也想开发一个这样的工具 但是被楼主先行了 还是坐等楼主的源码吧
2011-1-3 05:17
0
雪    币: 1361
活跃值: (1052)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
24
楼主能说下原理吗?  是对每一条即将要执行的指令下int3断点吗?  然后从中得到进程上下文的内容?进而获得执行的流程?
2011-1-3 05:26
0
雪    币: 3519
活跃值: (4047)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
25
这个东西很不错,就是格式太乱了。
2011-1-3 19:29
0
游客
登录 | 注册 方可回帖
返回
//