逆向工程核心原理(第六章,分析abex‘crackme#1)

记录最初学习逆向的经历

《逆向工程核心原理》--第六章

首先需要下载abex'crackme#1这个由汇编代码编写的程序

我是从别的大佬处下载的,很感谢大佬分享abexcm1.exe_免费高速下载|百度网盘-分享无限制 (baidu.com)

下载好之后,先在桌面运行(可能被系统视作危险,需要自己恢复)

1.运行程序

点击运行后会出现下面的弹窗,显示"Make me think your HD is a CD-Rom"消息

作为初学者,不知道这是什么消息,只能继续点确定

出现下面的界面,一脸懵,任然不知道是干嘛。

2.用ollydbg打开这个exe文件

这个exe文件的EP非常简单,说明是直接用汇编写的,如果是用开发工具写的,那么进去后的代码会很复杂

我们可以看到这里调用了三次MessageBoxA,看书上的意思是修改代码,让它最后执行了最后那个MessageBoxA,那个MessageBoxA的内容看起来也符合类似答案的那种语言---Title="YEAH!".............,OK,所以我们需要修改代码,让它去执行最后那个MessageBoxA。

3.分析代码

先一路F8,我们直接调试一遍,看看程序是具体怎么执行

这句是垃圾代码,没意义


这句跳转,也没有跳转


会发现一开始都是顺序执行,在第二个MessageBoxA调用后,调用结束后直接跳转到程序结束处

即是那句JMP SHORT abexcm1.00401050直接跳转到了程序结束(ExitProcess)

所以会发现,如果想让程序去执行第三个MessageBoxA,我们需要修改跳转的地址,而一路F8下来,能够修改的地方就是

4.修改代码

我们可以看到这个跳转的地址是0040103D

这个地址正好是第三个开始的地址,所以我们要想办法让程序跳转到这


代码是JE,跳转指令的上一个是CMP EAX,ESI,代码比较了EAX和ESI的值的大小,因为不相同,所以Z(ZF位)是0,所以JE没有跳转


方法1ok,我直接改成JMP,把JE改成JMP(直接跳转)

使用Copy to executable把修改后的保存,然后我再来运行修改后的代码

成功让程序跳转到第三个MessageBoxA的地方,成功破解


方法2:书本和网上都是方法1,我想了想,可以试着不用改JE,没有跳转的原因是因为ZF为0,ok,我让它弄成1,那不就可以了嘛,因为CMP EAX,ESI这段代码,代码比较了EAX和ESI的值的大小,EAX和ESI不相等,所以ZF为0,我可以改成CMP EAX,EAX ,这样改后,ZF就会被置为1,下一句JE就可以跳转

修改后:

执行到CMP那句时我们看看ZF位

ok,Z位被置为1了

运行程序我们可以看到成功破解!!!


方法是多种多样的,大家也可以自己发挥自己修改,不一定局限于网上的思路!

因为只有自己创新想出来的自己才觉得有意思!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值