新人拙作,如果有错误希望指正,谢谢!!!
一、环境搭建:
windows操作系统及ollydbg(注:这里的系统要求和调试工具不唯一)。
调试程序:http://HelloWorld.exe https://www.aliyundrive.com/s/ycqm9SRjNhT
二、实验目标:
查找main()函数中调用MessageBox()函数的代码。
三、正文:
1、代码执行法:
注:此方法适用于代码量较少的程序。
(1)打开od-->放入调试程序(程序放在文章末尾)-->然后一直按F8
出现下面的结果:
我们发现出现这个消息框的地址401144处有一条调用函数call 00401000。
(2)重新调试(Ctrl+F2)-->然后按F8(在地址0040113E处暂停)-->然后按F7
出现以下结果就代表我们找到目标了:
2、字符串索检法:
注:此方法适用于我们了解此程序的一些信息。
(1)打开od-->鼠标右键-->查找-->所有参考文本字串
英文版od:鼠标右键-->Search for -->All referenced text strings
(2)找到我们的目标-->双击
(3)结果如下:
3、API检索法(1):在调用代码中设置断点:
注:1.此方法要对API代码有所了解。2.对被压缩器/保护器操作过的程序此方法作用有限。
(1)打开od-->鼠标右键-->查找-->所有模块间的调用
英文版od:鼠标右键-->Search for-->All intermodular calls
(2)找到我们的目标-->鼠标双击
(3)结果如下
4、API检索法(2):在API代码中设置断点:
注:此方法对PE结构和汇编语言有较高要求(虽然此次实验体现不出来)
(1)打开od-->打开内存映射窗口(快捷键:Alt+M)-->观察user32库
(2)打开All names窗口
打开方法:鼠标右键-->查找-->所有模块中的名称
(3)在All names窗口中对着键盘直接敲messageboxw-->找到目标-->双击进入
(4)到达下面程序-->下断点(F2)-->然后运行代码(F9)-->结果如下
下断点:
结果如下: