2010-10-10 98 views
4

是否有可能将dll库转换回源代码?是否有可能将dll转换为源代码?

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

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

我应该担心吗?

回答

7

可能吗?是。

简单吗?这取决于。

如果你已经在.NET中编写你的DLL,decompilation是一个快照,使用像Reflector这样的工具,除非你有你的代码obfuscated

即使这不是.NET代码,它仍然是可能的,虽然更困难。如果您使用现有工具之一对代码进行混淆,则可以使事情变得更加困难。通常,如果您将代码(编译或不编译)给某人,他们能够从程序集/字节码反编译它,即使它被混淆了。

这并非总是那么容易,而且通常会花费太多精力。这真的取决于你是多么偏执狂,代码对第三方有多宝贵。

没有真正确定的攻击者的保护。这可能需要几年时间,但如果他们真的有决心,他们会想出来。

+0

通常更好的重写从头开始,如果它需要几年..哎呀,我只是把一个开源库从一种语言移植到另一种语言而感到非常沮丧。 – mpen 2010-10-14 22:59:12

5

从编译的代码中恢复源代码的过程称为decompilation,它可以与取决于编写程序的语言更好或更坏的结果来实现。

为了保护自己免受反编译,你可以使用obfuscator它通过修改二进制文件使其更难反编译。混淆器使用的技术的一个例子是用无意义的名称(例如a001,a002,...)替换在二进制文件中可见的成员的名称,以便反编译代码的意义不大。有些甚至使用这些名称的关键字(例如for,while,...),这样一个天真的反编译器将产生甚至不能编译的代码。他们也可能使用其他技术,如加密字符串,以便在查看二进制文件时不可读。

混淆不是完美的防御。即使使用模糊处理,足够有才华并且坚定的对手也许能够恢复与原始源代码类似的东西。

2

试着认为你的代码可以被任何人重写,因为一旦你开始在你的项目上承包商,这个想法就会被公开。

你有什么,他没有:想法如何使它的业务。如果你担心他这么做,向他提出NDA,你就不会有任何疑问。

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

相关问题