我有一个最初用VS2005编写的小实用程序。
我需要进行一些小改动,但其中一个dll的源代码已丢失。
是否有免费或价格合理的工具将dll反向工程回C ++代码。
答案 0 :(得分:12)
Hex-Rays decompiler是一个很棒的工具,但代码很难阅读,你将不得不花费大量时间对整个DLL进行逆向工程。
答案 1 :(得分:6)
您可能还想查看 OllyDbg ,它是一个32位汇编程序级别的分析调试器。它用于在没有源代码的情况下分析二进制代码。它是轻量级调试器。 OllyDbg 是一个共享软件,因此您可以下载&免费使用.. !!
访问OllyDbg是主页here
PS:早些时候,破解者使用NuMega的SoftICE来调试可执行文件&抓住寄存器值的快照。 SoftICE是一个高级调试器。它绝对是破解者最喜欢的工具。我不知道该产品的现状。 NuMega的网站没有相关信息。我可能忽略了它,但我找不到它。我建议您使用传统版本(4.0x)的SoftICE&为SoftICE应用WindowsXP补丁。使用SoftICE是一种“体验”。
进一步阅读: Reversing: Secrets of Reverse Engineering by Eldad Eilam
答案 2 :(得分:3)
我不知道您的确切情况,以及DLL为您的应用程序实现了多少功能。但我认为在大多数情况下,最好根据已知功能重写丢失的DLL。
如果您有一些文档,尤其如此。
尝试将二进制代码反向工程为汇编程序,然后再编译为C ++,然后尝试修改它以提供现有功能,在大多数情况下耗费时间,甚至可能不可能。
答案 3 :(得分:1)
如果你的小改动是编辑一些文本或跳过一些例程,你可以使用十六进制编辑器或反汇编程序,但你将无法看到原始的C ++代码,即使你找到一个工具,将DLL转回代码,所有变量名称都将消失,这将是一个很大的混乱。
答案 4 :(得分:1)
根据您的情况,我会保留遗留/二进制DLL的原样并编写一个包装DLL,它将更改和/或添加任何其他行为。
这个想法是在新DLL中聚合旧功能,导入旧的DLL。
答案 5 :(得分:1)
现在你可以免费使用ghidra,或者购买idapro
答案 6 :(得分:0)
你必须像游戏和应用程序破解者那样做:使用反汇编程序并破解汇编程序代码。
答案 7 :(得分:-3)
你不能把肉变回动物,即使你可能会有一只死去的动物:P
答案 8 :(得分:-3)
如果它是在.NET中完成的,那么为什么不使用dotNet Reflector。