zoukankan      html  css  js  c++  java
  • OD 实验(九)

    程序:

    运行程序

    点击 About

    这是要注册的

    点击 Register

    输入邮箱和注册码,点击 Register Now

    逆向:

    用 OD 打开程序

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

    搜索上图的内容

    双击进去

    上面有个 jnz 跳转指令

    如果 jnz 实现跳转的话,就会提示注册成功

    jnz 跳转语句上有个 test 指令

    test al,al 判断 al 是否为 0

    如果 al 为 0 的话,ZF 置 1,jnz 就不会实现跳转

    所以 al 要为非零的数,jnz 才会实现跳转

    al 为寄存器 EAX 的后八位

    EAX 寄存器储存的是函数的返回值

    test 指令上面有个 call 指令

    用 OD 运行这个程序

    点击 Register Now,程序将停在断点的函数处

    按 F7 步入

    这里面 call 调用了两个函数,执行了两个 test 指令判断 al

    先用 F8 步过这两个调用往下走

    走到这个地方的时候

    这个时候的 EAX 的值为一个地址

    按 F8 步过这个函数

    EAX 变为另外一个地址

    继续往下走,将走出这个函数

    重新步入这个函数

    步入该函数的第一个函数

    首先看一下最后出现的 al

    先把 al 的值赋给 bl,之后再把 bl 的值赋给 al

    所以上图的第一个 call 指令是决定 al 值的关键

    步入该函数,同样找最后出现的 al

    看看对 bl 操作的相关指令

    对 bl 的相关操作可以忽略,直接修改 mov al,bl 这里就好了

    把 1 赋给 al,按 F9 运行

    修改成功

  • 相关阅读:
    js计算两个时间相差天数
    享元模式
    外观模式
    组合模式
    装饰者模式
    桥接模式
    适配器模式
    元素量词 ? + *
    linux安装使用7zip
    linux shell使用别名,切换当前目录
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9615536.html
Copyright © 2011-2022 走看看