[课业] | 软件安全 | 使用OllyDbg破解TraceMe.exe程序

实验流程

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
    请添加图片描述
  • 放行程序,破解成功
    请添加图片描述

参考内容

  1. 博客:OllyDbg动态调试与逆向破解TraceMe.exe
  2. 官方网站:OllyDbg官网
  3. 网页:OllyDbg的断点插件
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值