2009-10-22 112 views

回答

1

他们是不同的格式。

对于.NET的DLL,您可以使用程序Ildasm.exe(安装了.NET框架)或.NET反射器(下载)

+0

谢谢, 但是win32 DLL怎么样? – Naruto 2009-10-22 11:45:30

+0

他们不太容易反编译成他们的原始语言。我不知道有一个好的工具,除了一个散布者(然后你会看到x86汇编......) – 2009-10-22 12:10:52

15

如果它是一个托管的DLL(.NET),则可以使用工具打开如ReflectorILDASM,您将看到代码为IL。 (编辑2017-02-03:在7年以上,.NET反汇编程序当然进步很多,现在能够生产非常体面的C#代码)

如果它是一个非托管DLL(本机),你出局的运气。你可以做的最好的是加载反汇编。除非你确切知道你想去的地方,否则你几乎无处可去。

0

要反编译.Net DLL,可以使用.Net Reflector。它适用于以任何.Net语言编写的DLL。

要反编译Java JAR文件,请尝试Java Decompiler

反编译本机代码(C++)要困难得多。

1

不可能(1)将目标代码反编译为源代码。检查界面完全是另一回事;有工具存在,但我不知道任何副手。

(1) - 好了,好了,有可能对某些语言和在一定条件下产生的,但将不完全可读的代码...

唯一可读的代码,你会得到的是汇编语言(有很多这样的程序)。有些语言可以反编译为原始(或接近)源代码,如Visual Basic 3.但是现在谁写VB3程序?没有人。至于看到DLL的导入/导出,您可以使用Dependency walker程序: http://www.dependencywalker.com/

对于某些语言,例如Visual Basic或C#,如果使用良好的语言,您可以获得可读的源代码反编译器和代码是不混乱(它大部分的时间不算)

检查这个网站,如果你有兴趣在反编译: http://www.program-transformation.org/Transform/DecompilationPossible

对于.NET,.NET反射器是必经之路走。它会反编译你的DLL到C#或VB.NET http://www.aisto.com/roeder/dotnet/

0

除非你在.NET土地,DLL是什么是二进制代码。您可以看到的唯一语言是汇编器 - 这只是提供机器语言的助记符方式。

1

关于反编译.NET已经足够说了。如果您决定从反向工程本机二进制文件开始,我推荐使用IDA

它支持不同的操作系统,处理器体系结构,检测并显示标准库的使用情况(以便您可以轻松找到感兴趣的地方),显示子例程之间的依赖关系图,显示堆栈中的过程参数等。也可以脚本化'detect C++ classes and try-catch blocksfinds COM interfaces names for UUIDs和做许多其他事情的脚本。这是一个很棒的工具,它有免费的版本。

+0

关于IDA的一些注意事项* 1.免费版本(可在[下载中心] (https://www.hex-rays.com/products/ida/support/download.shtml))是商业版本背后的许多版本,并且只支持32位二进制文​​件; 2.“初学者”商业版目前费用为589美元,“不支持64位文件”; 3.“专业”版本(支持64位文件)花费1129美元。 – 2016-09-17 23:01:57

0

对于本地DLL的this program,Hex-Rays反编译器(优秀的IDAPro反汇编程序调试器之上的一层)可能尽可能地接近您可以得到的。它不会恢复原始代码,但会将反汇编转换为类似C的伪代码。这虽然不便宜。