• 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 运行

    修改成功

  • 相关阅读:
    学习进度条
    学期总结
    实验四主存空间的分配和回收
    学术诚信与职业道德
    《构建之法》第8,9,10章 读后感
    实验三 进程调度模拟程序
    团队项目:学习四则运算,团队准备 3.0
    团队项目:学习四则运算,团队准备 2.0
    "数学口袋精灵"bug(团队)
    实验二作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9615536.html
Copyright © 2020-2023  润新知