• OD 实验(二十)


    程序:

    Keyfile.dat 里的内容

    该文件中要至少有 9 个

    ReverseMe.A:

    运行程序

    用 OD 打开该程序,运行

    弹出的是错误的对话框

    该程序发现 OD 对它的调试,所以该程序对 OD 进行反调试

    重新载入程序,按 F8 往下走

    这个循环是对 Keyfile.dat 的内容进行判断的

    循环过来,来到一个 call 语句

    执行该 call 语句就会弹出那个弹窗

    这个 call 指令调用的函数就在下面

    这个地方调用了一个 IsDebuggerPresent 函数

    该函数判断程序进程是否由用户模式的调试器调试,如果当前进程在调试器中,返回值为非零值,如果当前进程不在调试器中,返回值为零

    按 F8 往下走

    返回值 eax 的值为 1,是非零

    然后执行跳转,跳到弹出是错误的对话框

    Reverse.B:

    运行程序

    用 OD 载入程序,运行

    程序运行到该处会暂停,再运行

    程序就终止了

    重新载入程序,按 F8 一步一步往下走

    这里还是执行了 call 指令

    调用 IsDebuggerPresent 函数

    接着往下走

     把 esp 给 401121

    继续运行程序,程序就终止了

    Reverse.C:

    运行程序

    用 OD 载入程序,运行

    程序直接终止了

    重新载入程序,按 F8 往下走

    执行 call 指令之后会先用 IsDebuggerPresent 函数进行判断是否被反调试

    eax 的值为 1,执行跳转,然后执行 ExitProcess 函数退出程序

    Reverse.D:

    运行程序

    用 OD 载入程序,运行

    重新载入程序,按 F8 往下走

    这里 eax 为 1 的话,跳转到 jmp eax 这

    此时 eax 的值为 1,jmp eax 跳转到此处的话肯定会出错

  • 相关阅读:
    如何在 Linux 虚拟机上扩展根文件系统
    Linux 虚拟机中配置 GNOME + VNC
    在 Linux 中使用 Azure Premium 存储的基本优化指南
    如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
    不要在构造函数中抛出异常
    vtk java
    富文本keditor的一些使用问题
    几个问题
    Java并发编程(十四)并发容器类
    FreeBSD编译安装emacs,不要用ports
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9818490.html
Copyright © 2020-2023  润新知