【逆向工程核心原理】第二章—— 逆向分析Hello World! 在Ollydbg中快速查找指定代码的四种方法

1. 代码执行法

(用于被调试的代码量不大,且程序功能明确的情况)
一直按F8,在某个时刻会有消息框弹出:
在这里插入图片描述
被调用的函数地址为401000,按F7进入被调用的函数,该函数即为main()函数:
在这里插入图片描述

2. 字符检索法

右击----search for—all referenced text strings在这里插入图片描述
新跳出一个窗口,列出了程序代码引用的字符串:
在这里插入图片描述
双击“Hello word!”字符串,转到main()函数中调用MessageBox W()函数的代码处:
在这里插入图片描述
在dump窗口中使用goto命令,进一步查看4092A0地址的字符串:
在这里插入图片描述
灰色部分即为Unicode码形式表示的“Hello world!”
在这里插入图片描述

3. API检索法(1):在调用代码中设置断点

右击—search for—All intermodular calls,查看调用了哪些API函数:
在这里插入图片描述
可以看到调用MessageBox W()的代码,该函数位于40100E地址处:
在这里插入图片描述
双击它,找到主函数:
在这里插入图片描述

4. API检索法(2):在API代码中设置断点

OllyDbg并不能为所有可执行文件都列出API函数调用列表。使用压缩器/保护器工具对可执行文件进行压缩或保护之后,文件结构就会改变,此时OllyDbg就无法列出API调用列表了(甚至连调试都会变得十分困难)。
这种情况下,DLL代码库被加载到进程内存后,我们可以直接向DLL代码库添加断点。A)是操作系统对用户应用程序提供的一系列函数,它们实现于C:Windowsisystems32文件夹中.dl文件(如keme132.dI1、USer32.dI、gdi32.d1l、advapi32.dI1、ws2_32.dI1等)内部。
在OllyDbg菜单栏中依次选择View-Memory菜单(快捷键Alt+M),打开内存映射窗口。
内存映射窗口中显示了一部分HelloWorld.exe进程内存。在图底部的方框出以看到,USER32库被加载到了内存。
在这里插入图片描述
右击,列出被加载的DLL文件中提供的所有API:
在这里插入图片描述
定位到MessageBoxW
在这里插入图片描述
点击MessageBoxW,显示其代码,按F2打上断点:
在这里插入图片描述
再按F9继续执行,执行到代码断点处停止:
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值