zoukankan      html  css  js  c++  java
  • 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 跳转到此处的话肯定会出错

  • 相关阅读:
    Redis线程模型理解
    策略模式
    Spring Cloud 5大组件介绍
    单例模式
    hotspot虚拟机的调试
    编译虚拟机jvm——openjdk的编译
    mybatis的搭建和注入spring的方式
    springMvc+hibernate的web application的构建
    关于本博客
    本博客已停更
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9818490.html
Copyright © 2011-2022 走看看