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

我需要进行一些小改动,但其中一个dll的源代码已丢失。

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

有帮助吗?

解决方案

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

其他提示

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

访问OllyDbg是主页此处

PS:回到当天,破解者使用 SoftICE NuMega用于调试可执行文件&抓住寄存器值的快照。 SoftICE是一个高级调试器。它绝对是破解者最喜欢的工具。我不知道该产品的现状。 NuMega的网站没有相关信息。我可能忽略了它,但我找不到它。我建议您使用传统版本(4.0x)的SoftICE&为SoftICE应用WindowsXP补丁。使用SoftICE是一种“体验”。

进一步阅读: 逆转:逆向工程的秘密 Eldad Eilam

我不知道您的确切情况,以及DLL为您的应用程序实现了多少功能。但我认为在大多数情况下,最好根据已知功能重写丢失的DLL。

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

尝试将二进制代码反向工程为汇编程序,然后再编译为C ++,然后尝试修改它以提供现有功能,在大多数情况下耗费时间甚至是不可能的。

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

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

这个想法是在新DLL中聚合旧功能,导入旧的DLL。

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

你不能把肉变回动物,即使你可能会有一只死去的动物:P

如果它是在.NET中完成的,那么为什么不使用dotNet Reflector。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top