【发布时间】:2010-10-12 00:42:10
【问题描述】:
我有一个最初用 VS2005 编写的小实用程序。
我需要做一个小改动,但是其中一个 dll 的源代码在某处丢失了。
是否有免费或价格合理的工具可以将 dll 反向工程回 C++ 代码。
【问题讨论】:
-
是的,Ghidra,最初由 NSA 生产的开源反编译器。
标签: c++ winapi dll reverse-engineering
我有一个最初用 VS2005 编写的小实用程序。
我需要做一个小改动,但是其中一个 dll 的源代码在某处丢失了。
是否有免费或价格合理的工具可以将 dll 反向工程回 C++ 代码。
【问题讨论】:
标签: c++ winapi dll reverse-engineering
如果您的小改动是编辑一些文本或跳过一些例程,您可以使用十六进制编辑器或反汇编程序,但您将无法看到原始 C++ 代码,即使您找到了一个工具将 DLL 转回代码,所有变量名都将消失,这将是一团糟。
【讨论】:
Hex-Rays decompiler 是一个很棒的工具,但代码会很难阅读,而且您将不得不花费大量时间对整个 DLL 进行逆向工程。
【讨论】:
我不知道您的具体情况,也不知道 DLL 为您的应用程序实现了多少功能。但我认为,在大多数情况下,基于已知功能重写丢失的 DLL 会更好。
如果您有一些相关文档,则尤其如此。
尝试将二进制代码逆向工程为汇编程序,然后是 C++,然后尝试对其进行修改以提供现有功能,这在大多数情况下会很耗时,甚至是不可能的。
【讨论】:
您必须像游戏和应用破解者那样做:使用反汇编程序并破解汇编程序代码。
【讨论】:
您可能还想看看 OllyDbg,它是一个 32 位汇编器级别的分析调试器。它用于在您没有源代码的情况下分析二进制代码。它是轻量级的调试器。 OllyDbg 是一个共享软件,您可以免费下载和使用它..!!
访问 OllyDbg 主页here
PS:过去,破解者使用 NuMega 的 SoftICE 调试可执行文件并获取寄存器值的快照。 SoftICE 是一个高级调试器。这绝对是饼干最喜欢的工具。我不知道产品的现状。 NuMega 的网站没有关于它的信息。我可能忽略了它,但我找不到它。我建议您使用旧版 (4.0x) SoftICE 并为 SoftICE 应用 WindowsXP 补丁。使用 SoftICE 是一种“体验”。
进一步阅读: Reversing: Secrets of Reverse Engineering by Eldad Eilam
【讨论】:
根据您的情况,我将保留旧版/二进制 DLL 原样并编写一个包装 DLL,该 DLL 将更改和/或添加任何其他行为。
这个想法是将旧功能聚合到一个新 DLL 中,该新 DLL 会导入旧功能。
【讨论】:
现在您可以免费使用 ghidra,也可以购买 idapro