反向工程C ++ DLL
-
05-07-2019 - |
题
我有一个最初用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。