第六节 1、逆向CRACKME
1、OD加载CRACKME后,为啥地址停在0x00401000?--需要知道什么是PE结构。
——————
2、出现这个框,表示程序已经执行完判断。
3、弹出窗口是WIN32 API的知识,它是API的MessageBoxA函数实现的功能。
——————
4、如何正确的下断点?
(1)在OD的命令窗口:bp MessageBoxA(1)在OD的命令窗口:bp MessageBoxA
—>如果程序执行弹口窗口功能,则程序停下。
(2)程序停下后的代码区和堆栈区
5、什么是函数调用?
6、熟悉堆栈,通过画堆栈图彻底了解堆栈。
7、一个函数刚开始执行时,栈顶存储的是调用这个函数的上一个函数的返回地址。
上图在ODB里对应的是:
刚刚进入函数调用,可以看到堆栈顶的return的地址
右键该地址:
可以看到该地址是调用函数的下一条指令地址:
我们追踪下stack的变化就看到如下栈提升以后的情况:
那个返回地址刚好就是EBP+4!
当然,记得去结合我文章里写堆栈图的例子更加容易理解。
标签:逆向,窗口,函数,OD,MessageBoxA,地址,EBP,堆栈 From: https://www.cnblogs.com/bonelee/p/17281189.html