【问题标题】:How do I bypass IsDebuggerPresent this execute?如何绕过 IsDebuggerPresent 这个执行?
【发布时间】:2014-07-11 04:09:02
【问题描述】:

我试图从这个执行中找到 ZipCryto 密码,但是当我在 ollydbg 中打开它时,它总是返回关闭程序,因为 IsDebuggerPresent 模块。

我在互联网上找到了解决方案并尝试 - 使用 ollydbg 插件(隐藏调试器和 IsDebugPresent) - 尝试在 IsDebuggerPresent 模块中 NOP - 尝试在 IsDebuggerPresent 模块中强制返回 0

没有工作。

我使用 signrch 来查找处理 ZipCrypto 密码的位置并显示

0041c57c 3052 函数处理 ZipCrypto 密码 [32.le.12&]

IsDebuggerPresent 在哪里

00435cd8 2545 反调试:IsDebuggerPresent [..17]

我可以绕过 IsDebuggerPresent 并在此执行中找到 ZipCryto 密码吗? 执行链接:https://mega.co.nz/#!PMdAjZab!bTO7VbZ6OjhJ_mgiigJ1BApDAgDeVWK_X-mKl9aMZw8

对不起,我的英语不好。 谢谢你。

【问题讨论】:

    标签: encryption reverse-engineering ollydbg


    【解决方案1】:

    您应该在反编译器中打开文件,找到它调用IsDebuggerPresent 的位置,然后最终关闭应用程序(或显示错误或其他任何情况),您可以 NOP 这段代码以禁用检查。

    您可以使用IDA 等反编译器读取 ASM 代码,虽然它们不支持编辑,但您可以使用 CFF Explorer 对代码进行字节编辑(只需使用 NOPS 填充您要修补的区域)。

    【讨论】:

    • 它总是关闭。我认为它可能有另一个保护模块。你能帮我找到那个吗?我可以编写程序,但我不擅长组装和窃听。
    • 如果你找到对IsDebuggerPresent 方法的调用并且只是NOP,你会没事的。您可以看到它位于 0x00435cd8(假设来自您的主帖)。
    • 我在 CRC32 调用的signsrch 窗口分配中看到,CRC 代表循环冗余校验,用于防止代码编辑。它可能不会把你踢出去,因为你没有 NOP 调用 IsDebuggerPresent 方法,而是因为它检测到你已经改变了它。
    • 我可以在不绕过IsDebuggerPresent的情况下通过其他方法找到ZipCryto密码吗?我在组装和调试方面做得不好。谢谢你:)
    • 0x41c57c 附近的某个地方正在处理密码。虽然,获得这一点需要一些(基本)装配和逆向工程知识。
    【解决方案2】:
    cl 命令行上的

    /GS- 将删除此依赖关系。

    【讨论】:

      【解决方案3】:

      假设你的 exe 文件名为 a1.exe

      这样做:

      • Alt+E 转到Executable modules 窗口。
      • 选择 a1.exe
      • Ctrl+N
      • 在 importes 中找到 IsDebuggerPresent 并选择它。
      • 右键点击Follow import in Disassembler
      • 在此操作码上按F2
      • 运行程序并等待断点。
      • 按一些 F8 直到返回您的代码。
      • 搜索 jejnz 操作码之类的内容并更改它们。

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 2016-12-29
        • 2018-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        相关资源
        最近更新 更多