[课业] | 软件安全 | 使用OllyDbg破解TraceMe.exe程序
文章目录
- 实验流程
- 1. 调试分析
- 2. 破解校验
- 参考内容
实验流程
1. 调试分析
- 下载并解压OllyDbg

- 配置调试项目信息存储位置以及OD插件本地存储位置

- 运行程序,弹出用户名和序列号界面,这就是要破解的内容

- 使用OllyDbg打开TraceMe.exe程序

- 设置程序将自动暂停在 WinMain() 函数入口点( 该函数是 32 位应用程序开始执行时的入口点),开始运行程序

- 从工具栏的插件选项中打开 “API断点设置工具”,尝试勾选常见的的文本框数值获取的函数 “GetDlgItemTextA”,点击确定后程序将自动在程序中调用了该函数的位置设置断点

- 接着任意输入用户名和序列号,点击 check 按钮,发现程序暂停到 上述设置的调用函数 “GetDlgItemTextA” 的地址处

- 按快捷键 Ctrl+F9,使程序快速执行到函数 “GetDlgItemTextA” 的末尾 ret 返回指令处暂停

- 接着按 F8 单步步过,程序将返回至原先调用了该 “GetDlgItemTextA” 函数的程序位置处

- 继续按F8单步步过,可见已经得到序列号

- 继续按 F8 单步步过,直到 CALL 指令处,程序已经搜集完用户输入的用户名和序列号,同时在该位置将两个值压入栈中,猜测此处正式调用了判断序列号是否有效的核心逻辑函数

- 按 F7 单步步入,跳转并查看被调用的函数的内部逻辑

- F8 单步步过,运行到该函数末尾,注意到栈中原来存储用户名的变量值发生了改变

- 继续 F8,返回程序程序原来的运行位置,发现后面即将紧接着执行 test 判断指令,同时紧跟着执行了 je 判断跳转指令

- 继续 F8,在 je 指令的汇编代码行处可以添加注释“疑似关键跳转”

- 继续 F8,进行跳转,发现信息窗口已经开始提示序列号错误

- 放行程序,弹窗提示序列号错误

2. 破解校验
- 在je处设置断点重新运行程序并输入错误的用户名和序列号

- 由于je指令对zf标志位的值进行了判断,篡改zf的值由1到0

- 放行程序,破解成功

参考内容
- 博客:OllyDbg动态调试与逆向破解TraceMe.exe
- 官方网站:OllyDbg官网
- 网页:OllyDbg的断点插件
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
