首页
社区
课程
招聘
未解决 [讨论]OD入门 找MessageBox实验,新人发帖勿喷
发表于: 2020-1-11 12:42 5181

未解决 [讨论]OD入门 找MessageBox实验,新人发帖勿喷

2020-1-11 12:42
5181

做这个操作时为了学习调试,跟技术无关,可以通过想小实验慢慢的熟悉调试器,慢慢理解代码的调试。

 

 

 

  • 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 被陈阿姨编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
挺好,适合菜鸟的我..
2020-2-4 22:06
0
雪    币: 17
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
学习了
2020-6-23 21:09
0
雪    币: 40
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
看雪论坛真的可以学到很多你需要到东西
2020-6-24 17:31
0
游客
登录 | 注册 方可回帖
返回
//