逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈

还是上一次的abex' crackme #1,我们用OD附加看一下。


逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈_第1张图片


我们发现在调用这个MessageBox函数的时候,用了4个PUSH指令,我们在后面的注释中可以清楚的看到压入参数的内容。


如果我们将它还原成C语言的形式,是这样的:

逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈_第2张图片


我们可以清楚的看到汇编代码中压入参数的顺序和我们写代码时候的顺序恰恰是相反的。



这是因为栈内存结构先入后出的原则,如果要想让C代码中的参数正序弹出来,就必须汇编中逆序压进去。


此时,我们可以试着查看一下栈顶指针ESP的变化。



逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈_第3张图片



此时右边寄存器区域ESP:0019FF84




然后我们按F8,一直到第一个call.


逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈_第4张图片


此时ESP为0019FF74



相减相差0x10.    十进制相差16.



你可能感兴趣的:(汇编逆向破解)