-
-
未解决
[讨论]OD入门 找MessageBox实验,新人发帖勿喷
-
发表于:
2020-1-11 12:42
5181
-
未解决 [讨论]OD入门 找MessageBox实验,新人发帖勿喷
做这个操作时为了学习调试,跟技术无关,可以通过想小实验慢慢的熟悉调试器,慢慢理解代码的调试。
PE(Portable Executable):Windows操作系统下的可执行文件的格式,包含对文件规格的描述。
启动函数(Stub Code):编译器任意添加的代码,不同的编译器会根据自身的特点添加不同的启动函数,EP(Entry Point,入口点,执行程序时最先执行的代码的起始位置)代码区域中存在着许多启动函数,称为启动代码(StartUp Code)。调试中不需要分析启动函数,但是需要能清楚区分,启动函数、用户代码。
源码:编译成release版本.exe
#include "windows.h"
#include "tchar.h"
int _tmain(int argc,TCHAR *argv[])
{
MessageBox(NULL,_TEXT("Hello World!"), _TEXT("www.reversecore.com"),MB_OK);
return 0;
}
- 步骤1:用OD打开编译的exe 看到程序停在这个位置。
- 步骤2:先了解几个快捷键
F2
下断点,取消断点:
Ctrl+F2
重新开始
F7
执行一句指令,遇到CALL,进入函数内部
F8
执行一句指令,遇到CALL,不进入函数内部
F9
运行整个程序碰到断点停下。
Ctrl+F9
从当前位置自动运行到RETN指令处。
步骤3:开始调试
图中表示从上图的0040126F
按下F7会进入到CALL内部
本图中00401638
的位置,中间是函数代码,按Ctrl+F9到RETN指令处
。右下角堆栈窗口中看到00401274
地址,这是执行RETN指令后返回的位置,也是CALL指令的下一条指令的位置。可以查阅上图。把这段操作理解一下,后续将重复这些操作。
步骤4:找到MessageBox的位置
F7
执行00401274
处指令会跳转到004010ED
位置处,F7
执行,碰到CALL指令进入,中间可使用Ctrl+F9
快速到RETN指令处,F7
继续执行返回到上条CALL指令的下一条执行,重复执行以上操作,直到找到CALL指令内部入下图。
步骤5:完成小实验,检查自己掌握了下什么知识。
下一篇
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-1-11 19:35
被陈阿姨编辑
,原因: