freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

逆向分析教程(二)——大本营
2022-01-10 09:33:34
所属地 上海

逆向分析教程(一)——调试代码

该系列文章以《逆向工程核心原理》为原型,调整其中对于新手需要耗费大量时间解决之处,更方便于新手入门。也同时解决互联网上扫描件电子书版本的阅读障碍(如截图模糊等)。

新增调试命令

我想大家根据上文实操已经掌握了提到的基本指令,我们再来复习下,F7,F8,ctrl+F2,ctrl+F9,如果感觉陌生建议回炉重造。

因为今天我们又要开始了解一波新的命令了

指令快捷键含义
Gotoctrl+G移动到指定地址,用来查看代码或内存,运行时不可用
Execute till CursorF4执行到光标位置,即直接转到要调试的地址
Comment;添加注释
User-defined comment
鼠标右键菜单Search for User-defined comment
Label:添加标签
User-defined label
鼠标右键菜单Search for User-defined label
Set/Reset BreakPointF2设置或取消断点(BP)

我们快速浏览完基础的调试操作之后(反正你也一时半会记不住,就别强求了)我们来学习一下“大本营”。首先我们先来了解一下,什么是所谓的大本营。

大本营

每次重新运行调试器时,调试都会返回到EP处,并从此处开始新的调试,使用起来相当不方便。像我们这样立志要成为大佬的逆向专家,肯定需要在调试代码时设置某个重要的点(地址),使调试能快速转到设置点上。在代码中设置好这样的点后,再次调试时,调试流能够经过这些指定的点,从而快速达到目标。


这些在代码中设置的点就像在登山途中设置的营帐一样,以登喜马拉雅山为例,登顶过程中需要设置多个营帐充当据点,如“大本营”-“前进营1”-“前进营2”-“最终突击营”-“峰顶”。同样,调试代码量非常巨大时,整个调试过程可能需要好几天时间,那么在相应位置上设置这些“据点”将非常方便调试。下面向大家介绍几种在代码中设置“据点”的方法,并学习如何快速转到这些“据点”。首先运行OllyDbg,打开HelloWorld.exe可执行文件并调试,将40104F地址设置为“大本营”。

设置“大本营”的四种方法

1.Goto命令

首先我们需要记住一点,我们要设置为“大本营”的地址为40104F,即我们上文提到的main()函数。执行Goto(CTRL+G)命令,打开一个Enter expression to follow(输入跟踪表达式)对话框,在文本框中输入“40104F”,然后确定。
image

光标会自动定位到40104F地址处,执行Execute till cursor(F4)命令,让调试流运行到该处,然后从40104F处开始调试代码就变得非常方便了。

2.设置断点

调试代码时,还可以设置BP(Break Point,断点)(F2)让调试流转到“大本营”,是很常用且方便的方法。

image

设置断点后,调试运行到断点处将会暂停(若未在代码中设置断点则继续调试)。

在OllyDbg菜单栏中依次选择View-Breakpoints(ALT+B),可以列出代码中设置的断点

image

在断点列表中双击某个断点会直接跳转到相应位置。

3.注释

按键盘上的“;”键可以在指定地址处添加注释,还可以通过查找命令找到它。
image

调试过程中添加的注释如同编程过程中添加的注释一样重要。在重要代码上添加注释,将会使整个调试变得非常轻松。首先移动光标到另一个位置(40104F之外的任意位置),鼠标右键菜单中依次选择Search for-User defined comment,这样就能看到用户输入的所有注释。(用户输入的注释会保存在OllyDbg内部,每当再次运行时就会显示。)

image

红字显示的部分是光标所处的位置。注释位置与光标位置重合时,将仅以红字方式显示(这就是为啥刚刚我们让光标移到其他地方)。双击相应注释,光标会自动定位到相应的位置。

4.标签

我们可以通过标签提供的功能在指定地址添加特定名称。移动光标至40104F地址处,按“:”键输入标签。

image

这样我们就在40104F地址处加上了一个base camp标签。在OllyDbg的代码窗口可以看到40104F地址处添加的标签。

初始截图

image

添加标签后截图

image

我们可以看到,刚开始只显示地址40104F,添加标签后,代码变得非常直观,调试起来也更加轻松。

PS:如果不想显示标签,可以在options菜单中选择Debugging options的Disasm选项卡,点选show symbolic address项。

image

与注释一样,标签也可以检索。单机右键,选择Search for-User defined labels菜单即可打开User defined labels窗口,该窗口列出了用户设置的标签。红色部分看上文提到的注释部分。

image

同样的,双击标签也可以移动到相应位置。然后我们可以执行F4命令即可开始调试程序。

# 逆向 # 逆向工程 # 逆向分析 # 逆向技术 # 逆向基础
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录