本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 6065|回复: 14

谈谈这段时间对于逆向的体会 [复制链接]

Rank: 1

发表于 2011-3-29 03:34:52 |显示全部楼层
最近这段时间开始转向专门从事逆向活动。
刚开始用OD,可能是以前长期使用WINDBG的缘故,一直对于OD很不适应。最后索性放弃OD
在此我要盛赞一下WINDBG,毕竟是MS自己的东西,脚本功能用起来实在是挺爽的,不论适用于TRACE ring0 或者 ring3,用他的脚本功能打印程序执行日志,对某些重点函数逐级的展开分析效率那是灰常的爽啊。有了它,我基本现在抛弃单步跟踪的方式了。
比如我想知道一个函数的大致执行流程,用下面一个命令,在函数头部的第一个指令设置这个命令

bp FB212DF  ".echo ++++++++++++++++++++++++++++++++++++++;bp /1 poi(esp) \".echo &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;ed 0x10f00 0;g;\";ed 0x10f00 1;p 1000;"
你很快就可以得到这个函数的每条单步指令的执行结果

如果你对这个函数当中调用的某个SUB FUNCTION的具体过程感兴趣,你只需要下一条这个命令
这里假设某个子函数的名字是subfunction01  

bp subfunction01  ".if(dwo(0x10f00) == 1) {.echo ++++++++++++++++++++++++++++++++++++++;bp /1 poi(esp) \".echo &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;g;\";p 1000;} .else {g;}"

很快你就可以在TRACE日志中看到包含了这个子函数subfunction01和sub_FB212DF  的每条指令的单步过程。
如果你关心这个函数为什么会输出1or0,那么只要根据日志,从下往上追踪就好了。

反正我个人认为只要有了WINDBG,对我来说,OD至少可以靠边站了。

当然WINDBG有时候也不是万能的,在对付某些变态驱动的时候,我就不得不自己改一些开源的虚拟机工具,比如BOCHS,VBOX
前段时间我终于完成了BOCHS的改造,使得他可以运行我指定的任意函数,然后记录下这个函数执行期间所有访问的外部内存(包括读写和执行),这样一来,我实际上根本不需要关心一个函数的算法,只要将某个函数的用到的外部数据全部仿真,就可以随意BYPASS猥琐的ANTI-DEBUG。但是由于是纯虚拟,因此只能模拟软件当中的某些函数。总的来说我就是采用分割包围的方法,逐个分析一些关键函数,有了这个方法,逆向对我来说,已经变成了机械的体力活了。
其实我原本是希望将BOCHS改造成一个半虚拟化的东西,有点儿类似VMWARE的工作方式,将目标函数的机器码重新编译一下,在原机器指令的后面,加入一些记录性的指令,这样就能以更高的效率去监视目标程序了,但是貌似工作量有点儿大,只能暂时搁浅了。

说完动态调试,聊一下静态分析
我主要用IDA,自己做了一些IDA的脚本,为了能够更加方便快捷的设置断点,我有一个IDA脚本,运行之后会自动为指定的EXE的所有函数设置一次性断点bp /1 abc "? Eip;g;",这个东东对于找某些功能函数,还是非常高效率的。假如你只关心在“注册”相关函数,那么在点击注册之前,你要尽量做一些其他的操作,这样那些与注册无关的函数就会被自动清除掉。过一段时间后你就可以点击注册了。而这个时候那些被触发的函数很有可能就是你需要的函数。

我觉得要做好逆向,必须有一个强有力的工具,不管是你自己做的,还是买的。
工欲善其事必先利其器。

Rank: 1

发表于 2011-3-29 03:37:42 |显示全部楼层
补充一下,我现在特别希望有一款强大的日志分析工具,有时候调试器产生的日志那是一坨坨的啊,伤不起啊~~~~~~

Rank: 2

发表于 2011-3-29 14:56:38 |显示全部楼层
支持一下。
我也经常用WINDBG条件断点去分析问题

Rank: 1

发表于 2011-3-29 18:04:52 |显示全部楼层
楼上各位有逆未知结构的好经验吗??特别是结构中的指针这些。

我现在只能这样:先获得结果,然后再去断点。最后在一些结构附近查找相同的值

Rank: 1

发表于 2011-3-29 19:10:12 |显示全部楼层
楼主试过bitblaze没有?
http://bitblaze.cs.berkeley.edu/

他是基于qemu改的,同样可以记录运行轨迹,而且可以追踪数据的污染过程
C Miller写的教程: http://securityevaluators.com/files/papers/CrashAnalysis.pdf

Rank: 2

发表于 2011-3-29 20:55:00 |显示全部楼层
非常有创意

Rank: 1

发表于 2011-3-29 21:15:30 |显示全部楼层
Sutdy~~

Rank: 1

发表于 2011-3-30 01:16:28 |显示全部楼层
没试过bitblaze,我回头玩玩。
关于逆向未知结构,我觉得看日志应该就能分析结构里面某些成员的作用,同时在旁边准备一个MS VISIO,以便将看到的结构图形化。

Rank: 1

发表于 2011-3-30 01:53:01 |显示全部楼层
貌似bitblaze挺麻烦的,对LINUX不熟,不过里面的代码可以拿过来用,呵呵

Rank: 3Rank: 3

发表于 2011-3-30 12:55:15 |显示全部楼层
来学习一下哈。。

Rank: 1

发表于 2012-3-15 21:23:47 |显示全部楼层
study

Rank: 1

发表于 2012-3-21 16:38:30 |显示全部楼层
高手应该做的。

Rank: 1

发表于 2012-3-30 15:53:50 |显示全部楼层
新人,冒昧问句,坛子没有收藏功能吗,为啥我看不到自己的收藏列表?

Rank: 1

发表于 2012-3-30 15:54:16 |显示全部楼层
pencilword 发表于 2012-3-30 15:53
新人,冒昧问句,坛子没有收藏功能吗,为啥我看不到自己的收藏列表?

汗,看到了。

Rank: 1

发表于 2012-4-24 23:25:31 |显示全部楼层
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-6-26 14:59 , Processed in 0.040639 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部