是否可以将dll库转换回源代码?
并不是说我想这样做,但我需要将我正在编写的软件的一些非关键部分外包出去,但我不希望其他人复制到目前为止我所拥有的一切.
相应dll中的代码不是整个代码.我设法只在库中包含必要的代码,但我仍然不希望其他人复制我的代码.
我应该担心吗?
可能?是.
简单?这取决于.
如果您已经在.NET中编写了dll ,那么使用Reflector之类的工具就可以轻松地进行反编译,除非您对代码进行了模糊处理.
即使这不是.NET代码,它仍然是可能的,虽然要困难得多.如果您使用现有工具之一对代码进行模糊处理,则可能会使事情变得更加困难.
通常,如果您将代码(已编译或未编译)提供给某人,他们将能够从程序集/字节码中对其进行反编译,即使它被混淆了.
这并不总是容易的,而且通常需要付出太多努力.这实际上取决于你是多么偏执以及你的代码对第三方的价值.
没有真正坚定的攻击者的保护.它可能需要数年时间,但如果他们真正下定决心,他们就会明白这一点.
从已编译的代码中恢复源代码的过程称为反编译,并且可以根据编写程序的语言以更好或更差的结果实现.
为了保护自己免受反编译,你可以使用一个混淆器,它通过修改二进制来使其更难反编译.混淆器使用的技术的一个示例是用无意义的名称(例如a001,a002,...)替换二进制文件中可见的成员的名称,以便反编译的代码不太有意义.有些甚至为这些名称使用关键字(例如for,while,...),这样一个天真的反编译器就会生成甚至无法编译的代码.它们还可以使用其他技术,例如加密字符串,以便在查看二进制文件时不可读.
混淆不是一个完美的辩护.即使你使用混淆,一个足够有才华和坚定的对手也许能够恢复与原始源代码相似的东西.