第6-8天 OllyDebug的基本操作

由于篇幅太长采用分段学习,每天学习一点。

1.准备工作
简单来说就是去了解这个程序的各方面操作与用户的交互流程等,做到心中有数。

2.加载程序调试
首先设置调试器,让程序被中断在入口点。不过有的软件被精心修改,在启动的时候不能停在入口点,目的就是防止被调试。
虚拟地址,机器码,汇编指令,寄存器前文都已经说过。
值得注意的是ESP为堆栈指针,指向栈顶,右下角堆栈窗口显示栈的数值。
还有一个就是EIP寄存器,它指向下一条将要指向的命令,其他寄存器可直接修改数值,EIP寄存器不能直接修改,需要在调试器中新建此处为EIP才可以。
在往下就是标志寄存器,分别是 C P A Z S T D O他们的值只能是0或者1

3.单步跟踪
首先必须强记几个常用快捷键
F7 步进
F8 步过
CTRL+F9 直到出现ret指令时中断
ALT+F9 要是在系统领空,可以马上回到程序领空
F9 运行程序
F2 下断

(ALT+F9 在WIN7 64系统下可能会失效,网上搜了下也有很多人有这种情况)

小技巧:想看之前的代码可以按 - 键,想让光标回到当前EIP指令,可以单击C按钮或者双击EIP寄存器
想要重复按F7或者F8时可以使用快捷键CTRL+F7 CTRL+F8直到ESC或者F12停止。
CTRL+F9 直到出现ret指令时中断可以在调试器设置是中断在ret或者步过ret。

4.设置断点
F2下断或者双击机器码下断,B按钮中的窗口是对断点进行管理,空格键可以切换断点的状态。

想要获取文本框的字符串,一般有GetDlgItemText函数或者GetWindowText函数或者发送消息直接获取文本。

有原始的下断API方式,不过现在OD都自带CmdBar.dll插件可以直接bp API函数 来直接下断。

5.调试分析
讲了对GetDlgTiemTextA下断找出关键代码分析。
查找档案,对GetDlgTiemTextA函数有了进一步的了解。
程序主要获取用户名和序列号,然后通过算法判断序列号是否正确。
这里特别提出API函数大都使用stdcall调用约定(参数从右到左入栈,被调用者去平衡堆栈)

6.爆破法
很简单,就是在判断是否注册成功的地方修改他的逻辑,让它注册成功。
最后还得保存可执行文件。

7.算法分析
这是最难的,必须读懂全部算法,非常考验汇编的功底。

posted on   YXGust  阅读(575)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

导航

点击右上角即可分享
微信分享提示