逆向分析之基本知识点
EP
EnterPoint 入口点
EP是windows可执行文件的代码入口点,是程序的最先执行的代码的起始位置,它依赖于CPU(就是用OD打开exe最初始的位置)
可以看到一个CALL和JMP指令
CALL指令调用的函数里面就是程序的启动函数
启动函数并不是我们写的,而是编译器(VS)为了保证程序的运行自动添加的
启动函数里面通常有许多系统API(红色注释部分)
启动函数不只是CALL 0040270c这条指令,JMP 0040104F跳转的0040104F地址处也是启动函数
注意:启动函数会随开发工具的不同而不同,不同版本的相同工具也会不同
main函数在JMP中
小结
EP-》启动函数-》main函数
OllyDbg基本指令
Ctrl+F9 一直在函数代码内部运行,直到遇到RETN命令,会暂停在TETN处
F4 直接执行到你光标选定的位置
小键盘*显示当前EIP的位置
小键盘-显示上一行光标位置
enter 当遇到CALL或者JMP指令时,按enter可以显示函数的内容,但是不会执行进入函数
All intermodular calls 查看程序中调用了哪些API(OD是通过IAT知道程序调用了哪些API的)
关于函数返回地址在栈中位置总结
当F7进入函数的那一刻,ESP栈顶地址的值保存的就是该函数的返回地址
在函数内运行时,ESP值会不断变化,但是最后到RETN时,ESP的值又会恢复成刚才进入函数时保存的返回地址
这个返回地址就是该函数的下一条指令的地址
应用程序中代码和数据的位置
代码放在代码节区,数据放在数据节区,是分开存储的