环境: Windows7 x 32 VMware + OD
这个软件我之前很就就下了,但一直不知道怎么破,昨天偶尔试了一下,duang的一下就出来了,很难受、、、、、、、
软件查壳看看 。(当然破解不是主要目的,主要是学习这个重启验证的思路)
ASProtect 1.23左右的壳,BC++程序,程序很老了,先运行一下看看是什么情况
打开直接弹出要我们注册,我们点Enter key随便输入注册码,确定就要我们重启了,并没有提示我们输入的正确与否,而正
确与否在下次启动显现出来。即还出现这个about 框框。如果我们点OK的话会进入主程序界面去,但是中间会提示我们还拥
有15天使用时间,点击Help菜单about就弹出刚刚那个Nag
即使是我们点击退出主程序时,还是会弹出这个NAG。很难受
把他放入神器OD来一波,看他怎么说,看看我OD环境是怎么设置的,这个我没有特意去设置过,是之前的我没改动
然后是SOD的设置 这个我也是没动,还是之前的那样
然后我们直接运行,能打开软件,表示过了anti-debug,当然了还有针对断点的anti-debug没过,哈哈。然后肯定没反虚拟机。
我直接说我分析出的东西吧,不说其他错误的尝试了。Asp加密壳,运行会把真正的代码给解密出来,解密出来后,上面那个
图地址0x401000就是我们解密后程序的真正入口点,图如下:
硬件断点失效,int3断点被检测(CRC),可以自己试试思考一下、、、、、、、
我直接说我的过程了。载入OD运行程序、弹出NAG,F12暂停程序。查看堆栈,尽量找个返回地址个3-4个函数的地方。这
个看情况主要是找到这个调用这个函数后这个NAG就出来的位置,一次找不对,多找几次。
程序终止了我们不管,堆栈还是存在的,然后我们找到这个地址,应该是调用了[edx + 0xD8]这个地址的函数才弹的NAG。
(你不能看到我说我一下就找到了,其实我找了好几个,我现在是复现我的思路,所以错误的或者不是重点的我就不多说了
)复现一下,在0x408BE7位置F2下int3断点,然后ALT+B快捷键,把断点禁止。CTRL+F2重新载入程序,ALT+B打开刚刚
的断点位置,双击跟进去(这里主要是用这个int3断点给我们打标签 ,不是要真的下int3断点),右键数据窗口跟随,然后随
便选中几个byte下内存写入断点。
F9运行,来到第一次解密数据的地方: 看到jnz跳回上面,循环不用多说,这个时候把内存断点去掉,随便在jnz下一行汇编
F4快捷键跳过第一次解密(为什么是第一次解密,我之前分析过了),然后在按之前的又重新还原之前的内存写入断点,同
一个位置,即现在看到的数据窗口第一行。刚刚叫你右键跳转跟随到数据窗口的用处就在这表现出来了。再次按F9,这次
停到了第二个解密的地方:走位、走位、看不见、鬼刀一开、芜湖!!!难受
同理,把内存写入断点去掉,在绿色那按F4,解密完成。ALT+B打开断点窗口,双击进入做的断点标签,看看是不是解密
出来汇编代码了,和我们刚刚看到的一样了。
这个时候在0x408BE7这里下内存访问断点,F9可以看到3-4初访问这个地址的地方,3-4次F9后就程序就停到这个位置了。
这个时候NAG还没弹出来,我们F8后就弹出来了,那么可以判断这个函数就是弹出NAG的了,但是我们不知道这个函数
是不是本本身也会影响主程序的入口,我们按前面的再来一次,当运行到这个函数时,我们NOP掉,在F9看看,主窗口
能不能弹出来,NAG是否不弹,我们试了,发现确实是,那么我们只要过了这个函数就可以了,我们往上找找看看是谁
跳到了这里。(NOP后,由于这个程序之前在之前CRC,所以NOP后我们没改回来也没问题),往上不远找到了一个
在往上找找看
在这里(0x408268)下内存访问断点(怎么到这里和刚刚那个上面的操作一样的,等解密完全代码后,到这里就行了),等运行
到这里时,双击右边的符号标志Z,让他跳转就可以了。
重启程序就不行了,后续有空在写吧,优雅永不过时吧、、、、、、、、、、、
By:zuoshang
时间:2021年3月3日 23:22:53
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-3-3 23:30
被zuoshang编辑
,原因: 图片炸了