逆向-1-Crackme
结合1-5节课学习到的知识点现在开始完成作业
作业一
1.观察软件现象:进入CrackMe,点击help->register->键入Name和Serial,点击OK,会返回两次No luck!
2.从软件现象可以看到利用了MessageBoxA函数,以此为切入点
3.od打开CrackMe,在CPU窗口按下ctrl+n进入CrackMe程序函数界面,输入Mess定位到MessageBoxA,并点击反汇编窗口中跟随输入函数,进入MessageBoxA函数系统领空同时下断点,断点会下在MessageBoxA的第一行,也可以在Command:bp MessageBoxA下断点

4.按两下"-"回到CrackMe程序,按下F9执行程序,并键入Name和Serial,来到界面,可以看到MessageBoxA由004013C1跳转过来

5.右键004013C1选择"反汇编窗口中跟随"
如下两图,如果执行"004013AA",就不会到MessageBoxA,所以必定不会执行"004013AA",由于要弹窗MessageBoxA必定执行了"004013AC",可以发现是从"0040138B"跳转过来的,所以首先要取消跳转,先赋值nop



6.F9继续执行,此时会弹出第一次"No luck",断点会阻断第二次的"No luck",继续"反汇编窗口中跟随",定位到"0040137D"



7.点击"本地调用来自0040124C",选中"转到CALL来自0040124C"
进入CALL crackme.00401362和crackme.0040134D查看,crackme.00401362是"No luck",crackme.0040134D是"Good luck"
所以就需要00401243必须跳转到0040124C,所以把je改为jmp



修改完毕后重新执行程序,弹出"Good luck"

8.制作补丁
选择"复制到可执行文件"->"全部修改"->"全部复制"
然后会弹出crackme.exe的窗口,右键"保存文件"即可


作业二(最快速形式查找):
1.已知MessageBoxA函数,右键"中文搜索引擎"->"智能搜索"

因为我们的目标Good work!所以直接Follow,定位到0040134F


然后转到0040124C

同理,用同样的方法定位到第一个"No luck",由于不想让执行"MessageBoxA"
由于004013AA的jmp是强制跳转,所以004013AC是执行过程,为了不执行该过程,则需要修改0040138B为不跳转,为了一直不跳转,则设为nop



浙公网安备 33010602011771号