• OD 实验(十二)


    程序:

    运行程序

    界面显示的是未注册

    点击 Help -> About

    点击 Use Reg Key

    这里输入注册码

    用 PEiD 看一下

    该程序是用 Delphi 6.0 - 7.0 写的

    逆向:

    用 OD 打开程序

    右键 -> 查找 -> 所有参考文本字串

    然后右键 -> 查找文本

    搜索

    这里有个是 accepted 为接受,failed 为失败

    双击到 accepted 处

    如果程序执行到这里则说明,注册码是可以的

    在 Delphi 中,push 后的 retn 指令相当于 jmp 指令

    在该 push 处下一个断点,然后跑一下程序

    输入注册码,点击 Register

    程序没有停在断点处,我们往上看程序

    可以看到很多的 call 指令

    这也是 Delphi 语言的特性

    在提示信息之后下一个断点

    重新跑一下程序

    输入注册码,点 Register

    程序停在了断点处

    程序会出现这样的对话框

    点击“确定”,然后按“Register”

    再按 F8 往下走

    走到某个地方会跳到动态链接库处

    按“-”后退一步看看在哪跳的(“+”为向前一步),已经执行,只是向前或向后看一下

    在 call 上面的 mov 指令下一个断点

    运行程序,停在该断点处

    如果继续执行的话,会弹出刚才那个错误的对话框

    把 call 语句改为 nop

    接下来有个 jbe 跳转语句会进行跳转

    跳转到下面的地方

    按 F8 继续往下走

    这里有两个跳转,这两个跳转都是未实现的

    如果这两个跳转都没跳的话,将会弹出错误的对话框,所以要让其中一个进行跳转

    je 跳转的地方为

    jnz 跳转的地方为

    jnz 跳转到退出的位置

    所以,让 je 指令执行跳转,把 je 改为 jmp

    je 执行跳转之后按“F8”继续往下走

    这里有个已实现跳转的 jnz 跳转

    如果它实现跳转的话,将会跳过成功的对话框,所以不要让它实现跳转

    把该指令改为 nop

    然后继续按 F8 往下走

    走到这个地方会弹出成功的对话框

  • 相关阅读:
    redis学习教程三《发送订阅、事务、连接》
    redis学习教程二《四大数据类型》
    redis学习教程一《Redis的安装和配置》
    java架构《并发编程框架篇 __Disruptor》
    java架构《并发线程高级篇四》
    java架构《并发线程高级篇三》
    java架构《并发线程高级篇二》
    java架构《并发线程高级篇一》
    java架构《并发线程中级篇》
    java架构《并发线程基础二》
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9678256.html
Copyright © 2020-2023  润新知