是否可以将dll转换为源代码?

时间:2010-10-10 19:33:32

标签: .net obfuscation

是否可以将dll库转换回源代码?

不是我想要这样做,但我需要将我正在编写的软件的一些非关键部分外包,但我不希望其他人复制到目前为止我所拥有的所有内容。

各个dll中的代码不是整个代码。我设法只在库中包含必要的代码,但我仍然不希望其他人复制我的代码。

我应该担心吗?

3 个答案:

答案 0 :(得分:8)

可能?是。

容易吗?这取决于。

如果你已经用.NET编写了你的​​dll,decompilation很容易,使用像Reflector这样的工具,除非你有obfuscated你的代码。

即使这不是.NET代码,它仍然有可能,但要困难得多。如果您使用现有工具之一对代码进行模糊处理,则可能会使事情变得更加困难。

通常,如果您将代码(已编译或未编译)提供给某人,他们能够从程序集/字节码中对其进行反编译,即使它被混淆了。

这并不总是容易的,而且通常需要付出太多努力。这实际上取决于你是多么偏执以及你的代码对第三方的价值有多大。

没有真正坚定的攻击者的保护。它可能需要数年时间,但如果他们真正下定决心,他们就会明白这一点。

答案 1 :(得分:5)

从已编译的代码中恢复源代码的过程称为decompilation,并且可以根据编写该程序的语言获得更好或更差的结果。

为了防止反编译,你可以使用obfuscator,它可以修改二进制文件,使其更难反编译。混淆器使用的技术的一个示例是用无意义的名称(例如a001,a002,...)替换二进制文件中可见的成员的名称,以便反编译的代码不太有意义。有些人甚至使用这些名称的关键字(例如for,while,...),这样一个天真的反编译器就会产生甚至无法编译的代码。他们还可能使用其他技术,例如加密字符串,以便在查看二进制文件时无法读取它们。

混淆不是一个完美的辩护。即使你使用模糊处理,一个足够有才华和坚定的对手也许能够恢复与原始源代码相似的东西。

答案 2 :(得分:2)

尝试认为您的代码可以被任何人重写,因为一旦您开始接受项目的承包商,这个想法将会公开。

你有什么,他没有:想法如何做生意。如果你害怕他这样做,向他提出NDA,你就不会有任何疑问。

所以我的建议不要在这里担心技术。