逆向工程核心原理第六章

0x00 前言

逆向还是学一学吧,万一有一天就用到了呢。
abex’crackme #1的破解。

0x01 正文

1.试用

运行效果
逆向工程核心原理第六章_第1张图片
点击确定之后
逆向工程核心原理第六章_第2张图片

2.od分析

逆向工程核心原理第六章_第3张图片
我们来一步一步的进行分析。
首先初始状态ESP指向栈底,此时为0018FF84。
EIP则是00401000,其实就是程序运行的地址。
逆向工程核心原理第六章_第4张图片
这里显示的应该是内存空间,可以看到现在栈里是空的。
逆向工程核心原理第六章_第5张图片
F7一下。直接看图,ESP递减,EIP增加

逆向工程核心原理第六章_第6张图片
继续F7
逆向工程核心原理第六章_第7张图片
F7
逆向工程核心原理第六章_第8张图片
F7,这里可以看到push栈结束了,类似于创建了一个数组
逆向工程核心原理第六章_第9张图片
F8,此时会直接显示弹窗。按确认之后进行下一步。
逆向工程核心原理第六章_第10张图片
被框起来的就是改变了的值。
逆向工程核心原理第六章_第11张图片
接着看这里调用了GetDriveType,GetDriveType可以获取目录和盘号的属性。
这里是先push了一个c判断,然后获取属性。
F8一下
逆向工程核心原理第六章_第12张图片
继续F8,此时相当于GetDriveType已经运行完成了。
逆向工程核心原理第六章_第13张图片
继续F8一下,这里是inc esi inc指令就是+1,那么这里就是esi寄存器+1
逆向工程核心原理第六章_第14张图片
继续F8,dec的意思是-1 这里是将eax-1
逆向工程核心原理第六章_第15张图片
F8,jmp 00401021,跳转到00401021位置,但是由于00401021就是下一行,所以这一行代码就是所谓的垃圾代码。
逆向工程核心原理第六章_第16张图片
F8 inc esi 连续两个。就是esi=esi+2
逆向工程核心原理第六章_第17张图片
F8 dec eax eax+=1
逆向工程核心原理第六章_第18张图片
继续F8 cmp eax,esi.
cmp指令的含义就是对两个操作数进行比较,如果一致,ZF被置为1
逆向工程核心原理第六章_第19张图片
这明显是不一样的,Z是0

然后剩下的内容其实都是重复的。

3.破解

这里破解就很简单了

3.1 方法一

直接把je改成jmp,这样就不管一不一样就可以直接跳转了。

3.2 方法二

判断不可能的,直接在0040101D 处写 jmp short 0040103D 就ok了,不用去等判断
逆向工程核心原理第六章_第20张图片

3.3 方法三

下断点,然后动态修改EAX的值和ESI的值一致即可。

3.4 方法四

下断点,cmp之后,把ZF改成1就行。
逆向工程核心原理第六章_第21张图片

可以看到这里是直接跳转了的。逆向工程核心原理第六章_第22张图片

你可能感兴趣的:(逆向)