官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
我想大家根据上文实操已经掌握了提到的基本指令,我们再来复习下,F7,F8,ctrl+F2,ctrl+F9,如果感觉陌生建议回炉重造。
因为今天我们又要开始了解一波新的命令了
指令 | 快捷键 | 含义 |
---|---|---|
Goto | ctrl+G | 移动到指定地址,用来查看代码或内存,运行时不可用 |
Execute till Cursor | F4 | 执行到光标位置,即直接转到要调试的地址 |
Comment | ; | 添加注释 |
User-defined comment | 鼠标右键菜单Search for User-defined comment | |
Label | : | 添加标签 |
User-defined label | 鼠标右键菜单Search for User-defined label | |
Set/Reset BreakPoint | F2 | 设置或取消断点(BP) |
我们快速浏览完基础的调试操作之后(反正你也一时半会记不住,就别强求了)我们来学习一下“大本营”。首先我们先来了解一下,什么是所谓的大本营。
每次重新运行调试器时,调试都会返回到EP处,并从此处开始新的调试,使用起来相当不方便。像我们这样立志要成为大佬的逆向专家,肯定需要在调试代码时设置某个重要的点(地址),使调试能快速转到设置点上。在代码中设置好这样的点后,再次调试时,调试流能够经过这些指定的点,从而快速达到目标。
这些在代码中设置的点就像在登山途中设置的营帐一样,以登喜马拉雅山为例,登顶过程中需要设置多个营帐充当据点,如“大本营”-“前进营1”-“前进营2”-“最终突击营”-“峰顶”。同样,调试代码量非常巨大时,整个调试过程可能需要好几天时间,那么在相应位置上设置这些“据点”将非常方便调试。下面向大家介绍几种在代码中设置“据点”的方法,并学习如何快速转到这些“据点”。首先运行OllyDbg,打开HelloWorld.exe可执行文件并调试,将40104F地址设置为“大本营”。
设置“大本营”的四种方法
1.Goto命令
首先我们需要记住一点,我们要设置为“大本营”的地址为40104F,即我们上文提到的main()函数。执行Goto(CTRL+G)命令,打开一个Enter expression to follow(输入跟踪表达式)对话框,在文本框中输入“40104F”,然后确定。
光标会自动定位到40104F地址处,执行Execute till cursor(F4)命令,让调试流运行到该处,然后从40104F处开始调试代码就变得非常方便了。
2.设置断点
调试代码时,还可以设置BP(Break Point,断点)(F2)让调试流转到“大本营”,是很常用且方便的方法。
设置断点后,调试运行到断点处将会暂停(若未在代码中设置断点则继续调试)。
在OllyDbg菜单栏中依次选择View-Breakpoints(ALT+B),可以列出代码中设置的断点
在断点列表中双击某个断点会直接跳转到相应位置。
3.注释
按键盘上的“;”键可以在指定地址处添加注释,还可以通过查找命令找到它。
调试过程中添加的注释如同编程过程中添加的注释一样重要。在重要代码上添加注释,将会使整个调试变得非常轻松。首先移动光标到另一个位置(40104F之外的任意位置),鼠标右键菜单中依次选择Search for-User defined comment,这样就能看到用户输入的所有注释。(用户输入的注释会保存在OllyDbg内部,每当再次运行时就会显示。)
红字显示的部分是光标所处的位置。注释位置与光标位置重合时,将仅以红字方式显示(这就是为啥刚刚我们让光标移到其他地方)。双击相应注释,光标会自动定位到相应的位置。
4.标签
我们可以通过标签提供的功能在指定地址添加特定名称。移动光标至40104F地址处,按“:”键输入标签。
这样我们就在40104F地址处加上了一个base camp标签。在OllyDbg的代码窗口可以看到40104F地址处添加的标签。
初始截图
添加标签后截图
我们可以看到,刚开始只显示地址40104F,添加标签后,代码变得非常直观,调试起来也更加轻松。
PS:如果不想显示标签,可以在options菜单中选择Debugging options的Disasm选项卡,点选show symbolic address项。
与注释一样,标签也可以检索。单机右键,选择Search for-User defined labels菜单即可打开User defined labels窗口,该窗口列出了用户设置的标签。红色部分看上文提到的注释部分。
同样的,双击标签也可以移动到相应位置。然后我们可以执行F4命令即可开始调试程序。