【问题标题】:Reverse engineer C++ DLL逆向工程 C++ DLL
【发布时间】:2010-10-12 00:42:10
【问题描述】:

我有一个最初用 VS2005 编写的小实用程序。

我需要做一个小改动,但是其中一个 dll 的源代码在某处丢失了。

是否有免费或价格合理的工具可以将 dll 反向工程回 C++ 代码。

【问题讨论】:

  • 是的,Ghidra,最初由 NSA 生产的开源反编译器。

标签: c++ winapi dll reverse-engineering


【解决方案1】:

如果您的小改动是编辑一些文本或跳过一些例程,您可以使用十六进制编辑器或反汇编程序,但您将无法看到原始 C++ 代码,即使您找到了一个工具将 DLL 转回代码,所有变量名都将消失,这将是一团糟。

【讨论】:

    【解决方案2】:

    Hex-Rays decompiler 是一个很棒的工具,但代码会很难阅读,而且您将不得不花费大量时间对整个 DLL 进行逆向工程。

    【讨论】:

    • Hex 射线可能是最好的,但它给你的代码只会在弄清楚它的某些部分如何工作并且无法编译它时有用。 +1
    • 如果更改足够小,您可以使用反编译器的输出来修补程序集中的 dll,例如使用 OllyDbg。
    • 是的,OllyDbg 一直是我最喜欢的 dll 补丁,但只是在 SoftICE 之后。怎么会有人忘记传说中的“SoftICe”?
    • @abhilash 哪里可以买到 Softice?
    【解决方案3】:

    我不知道您的具体情况,也不知道 DLL 为您的应用程序实现了多少功能。但我认为,在大多数情况下,基于已知功能重写丢失的 DLL 会更好。

    如果您有一些相关文档,则尤其如此。

    尝试将二进制代码逆向工程为汇编程序,然后是 C++,然后尝试对其进行修改以提供现有功能,这在大多数情况下会很耗时,甚至是不可能的。

    【讨论】:

      【解决方案4】:

      您必须像游戏和应用破解者那样做:使用反汇编程序并破解汇编程序代码。

      【讨论】:

        【解决方案5】:

        您可能还想看看 OllyDbg,它是一个 32 位汇编器级别的分析调试器。它用于在您没有源代码的情况下分析二进制代码。它是轻量级的调试器。 OllyDbg 是一个共享软件,您可以免费下载和使用它..!!

        访问 OllyDbg 主页here

        PS:过去,破解者使用 NuMega 的 SoftICE 调试可执行文件并获取寄存器值的快照。 SoftICE 是一个高级调试器。这绝对是饼干最喜欢的工具。我不知道产品的现状。 NuMega 的网站没有关于它的信息。我可能忽略了它,但我找不到它。我建议您使用旧版 (4.0x) SoftICE 并为 SoftICE 应用 WindowsXP 补丁。使用 SoftICE 是一种“体验”。

        进一步阅读: Reversing: Secrets of Reverse Engineering by Eldad Eilam

        【讨论】:

          【解决方案6】:

          根据您的情况,我将保留旧版/二进制 DLL 原样并编写一个包装 DLL,该 DLL 将更改和/或添加任何其他行为。

          这个想法是将旧功能聚合到一个新 DLL 中,该新 DLL 会导入旧功能。

          【讨论】:

            【解决方案7】:

            现在您可以免费使用 ghidra,也可以购买 idapro

            【讨论】:

            猜你喜欢
            • 2016-04-01
            • 2016-03-08
            • 2012-05-01
            • 2011-01-17
            • 2011-03-30
            • 2015-08-15
            • 2012-08-26
            • 2011-06-07
            • 2016-09-27
            相关资源
            最近更新 更多