OllyDbg动态调试与逆向破解TraceMe.exe |
您所在的位置:网站首页 › od破解注册码教程 › OllyDbg动态调试与逆向破解TraceMe.exe |
文章目录
前言OllyDbg基础介绍快捷操作
TraceMe调试分析破解校验
总结
前言
OllyDbg 是一个新的动态追踪工具,是将 IDA 与 SoftICE 结合起来的产物,Ring3 级调试器,非常容易上手,另外由于 OllyDbg 是一个通用的 32 位汇编分析调试器且操作界面非常直观简单,己代替 SoftICE 成为当今最为流行的调试解密工具了。同时 OllyDbg 还支持插件扩展功能,是目前最强大的调试工具,OllyDbg中文官方网站。 OllyDbg下面先简单介绍下 OllyDbg 这款工具的基本使用,OllyDbg下载地址(吾爱破解专用版)。 基础介绍OllyDbg 的核心窗口如下: OllyDbg 有两个关键的路径配置项目需要指定: UDD 目录:其作用是保存你调试的工作,比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作; Plugin 插件目录:OllyDBG 支持插件功能,插件的安装也很简单,只要把下载的插件(一般是个 DLL 文件)复制到 OllyDBG 安装目录下的 PLUGIN 目录中就可以了,OllyDBG 启动时会自动识别。 配置页面如下图所示: OllyDbg 的核心快捷键: 快捷键备注F2:设置断点只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点F8:单步步过每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码F7:单步步入功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上F4:运行到选定位置作用就是直接运行到光标所在位置处暂停F9:运行按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行CTRL+F9:执行到返回此命令在执行到一个 ret (返回指令)指令时暂停,可用于快速定位到当前 CALL 所调用函数的末端位置Alt+b:打开断点编辑器可查看、编辑所有下过的断点Alt+F9:执行到用户代码如果跟进系统DLL提供的API函数中,此时想返回到应用程序领空里,可用该快捷键执行返回到用户代码命令OllyDbg 的其他介绍和使用方法此处不再展开,有兴趣可学习一下 OllyDbg 的教程(B站视频):动态调试工具之OllyDbg(OD)教程。 TraceMe本文所要演示的 TraceMe.exe 程序,来自段钢的《加密与解密》一书中的示例程序,程序下载地址。 下文的目的是借助 OllyDbg 对程序的逻辑进行分析并尝试破解序列号校验(类似于软件破解)。 调试分析1、使用 OllyDbg 打开 TraceMe.exe 程序,程序将自动暂停在 WinMain() 函数入口点( 该函数是 32 位应用程序开始执行时的入口点),点击如下按钮或者 F9 开始运行程序: 通过上述调试分析,基本上可以判定 004011F5 地址处的关键跳转指令将直接影响程序进行序列号校验的运行结果,下面尝试通过 OllyDbg 对运行结果进行断点拦截和篡改,从而绕过序列号校验。 1、既然 je 指令对 ZF 标志位的值进行了判断,可以在 je 指令处设置断点,重新运行程序并输入错误的用户名密码,然后篡改 ZF 标志位的值(由 1 改为 0): 问题来了:上述通过篡改程序运行过程中寄存器的值的方式不太方便,你总不能每次运行该程序都打开 OllyDbg 进行动态调试篡改吧?那么,能不能一步到位,永久实现破解,每次都开该程序都能自动绕过序列号校验呢?答案当然是可以,但是方法不是该寄存器标志位的值,而是该程序的汇编代码了(即 je 汇编指令),下面进行演示。 1、双击 je 指令处的汇编代码,将 je 修改为 jne 指令: 本文介绍了 OllyDbg 调试工具的使用,并借助 TraceMe.exe 测试程序对其进行调试并成功破解其序列号校验。由于侧重介绍 OllyDbg 的使用和对程序的猜解思路,故调试过程中没深究与分析程序的校验逻辑,关于程序的逆向分析与破解脚本编写可参见:TraceMe注册机编写 与 OD工具使用-逆向TraceMe.exe。 同时可以看到,OllyDbg 的动态调试功能与作用,跟上一篇文章 GDB动态调试攻防世界Simple-Check-100 介绍的 Linux 下的动态调试工具 GDB 属于异曲同工! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |