-
-
[旧帖]
[原创]破解初体验[申请邀请码]
0.00雪花
-
发表于:
2009-12-4 15:22
1412
-
[旧帖] [原创]破解初体验[申请邀请码]
0.00雪花
ollydbg,VMWare,IDA+Hex-Rays
提前声明:以前还没有从汇编级分析过软件,此次接触也不过十几天,错误漏洞在所难免,写本文的目的一是分享一下自己这段时间的一些经验,同时更重要的是希望大家看看我的破解分析过程,是否走了弯路?共同探讨,共同进步!
以前知道有个softice,一个据说很牛X的调试工具,本来是想用这个工具的,后来在看雪上转了转,发现大家都推荐ollydbg,更重要的是很多关于ollydbg的资料,于是就决定用这个开始自己的破解之旅。
关于ollydbg入门,我就不多说了,我建议大家直接去看看CCdebuger的入门系列吧,可操作性很强,也很详细,我花了两天时间看完了,在这里感谢一下这位前辈,让我这样的新手可以很快入门:)
看完之后,我遇到的第一个问题是:我的程序里面用到了一个dll,但是不是静态链接,是LoadLibaray进来的。这样就无法直接通过参考下断点跟进去了,而我想要的东西就是在这个dll里面。下面是我解决这个问题的方法:
先用od把dll运行起来,Ctrl+N,找到dll输出的几个接口名称,双击,到了输出接口的地址,然后点右键,汇编,出现一个汇编于此处的对话框,在里面输入int 3,下一行输入RETN。最后点右键,复制到可执行文件,所有修改。我的思路是,不管主程序在什么位置调用了这个接口,进来之后马上会被int 3中断,就相当于在dll里面下了个断点。当然,修改了之后的exe肯定无法正常运行了,但是我的目的只是找到主程序调用这个接口的地方,所以先备份dll,后面还要恢复。
ok,再次用od运行主程序,果然,在int 3的地方停下来了,再执行下一句,直接return了,这样就找到了主程序里面调用dll这个接口的位置,标记下,下断点,恢复原来的dll,ok。
第二个问题:我知道这个dll里面用到了文件操作,但是却无法下断点。当调试的时候进入dll里面,Ctrl+N,也能发现有CreateFileA(因为是98下,所以没有W),但是点击在每个参考上下断点的时候,却没有下一个断点,到现在我也没搞明白为什么会这样?下面是我解决这个问题的方法:
首先,用IDA+Hex-Rays把dll反编译成C语言,然后在这个里面查找CreateFileA,每找到一个,就看看是在那个函数里面调用的,因为这个反编译出来的C源程序每个函数前面都有注释,表明了这个函数在dll里面地址。然后再回到dll里面,找这个地址,顺着地址往下再找,找到调用CreateFileA的地方,注释,加断点。问题是能解决,但是花了不少时间。
不知道我可有绕路的地方?欢迎大家批评指正。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法