教育培训 > net C#开发的软件,用什么方法防止反编译?

net C#开发的软件,用什么方法防止反编译?

2020-10-15 02:03阅读(60)

net C#开发的软件,用什么方法防止反编译?:.net是中间语言,刚开始出来的时候,比较流行混淆方式让破解者增加破解难度,但是由于.net写的程序代码是直接交给托

1

.net是中间语言,刚开始出来的时候,比较流行混淆方式让破解者增加破解难度,但是由于.net写的程序代码是直接交给托管程序去解析的,所以你混淆也没多大意义了,因为你再怎么混淆最终执行的时候也得让托管程序能识别,现在的流行方式是把重要代码和加密算法结合起来,并且将主要代码放多个虚拟机里执行,或者主要代码放服务器上,只有注册并且解密成功后才返回正确的代码。注意做注册机制的时候,不要只单纯的验证注册码是不是正确。最好是能把注册码和加密算法关联起来。这样即使破解者爆破了你的程序,由于没有成功解密主要数据,等于也没有破解成功。

2

使用随机想出来的东西做方法名和变量名字,代码不需要逻辑性。这样就算是你自己想看懂也要好久,害怕反编译?

3

是不是用.net 做了工业软件,完全运行在客户端上,自己没有服务器?

如果是这样的话,一般选择加密服务,有公司专门提供这种服务,记得以前公司用过加密狗的,是硬件加密的,要运行需要一个特殊的key,那个东西是专门的一个u盘。

还有一种方式,那就是用c或者C++写核心代码,然后用c#调用它,这样即使反编译也没有用。知道有人肯定说可以反向c,c++代码,这个也是可以的,就是成本比较高。

如果有服务器端,应该没有阻止反编译的问题。

4

纠结软件的会不会被反编译是没意义的,任何高级语言开发的软件都能被反编译,无非是代价的高低罢了,如果别人真的想反编译你的软件,总能找到方法的。

5

visual studio 自带一个 obfuscation, 还有更专业的可以买,这个工具在javascript 世界叫uglifier一样的东西。但是别忘了stacktrace将难以辨别,所以必须要用专业工具转换回来才能读懂stacktrace,而且这个工具必须要用原来的symbol 数据(在obfuscation)时候产生的来解码,版本不对,根本不行。

只要造成读代码一定难度,反编译就是成功的,不要听那些人瞎扯,以为自己能读.net intermediate language很牛,你破解软件,这种雕虫小技是可以的,软件一复杂,恐怕给你源代码都不见得能完全读懂,还想靠IL偷代码? 而且即便偷了还是要吃官司。

6

我专治《防止.net反编译》各种不服。IL代码层直接干。

7

有第三方的加密服务产品。包括代码深度混淆,组件加壳,动态库嵌入加密,硬件狗等等很多种。

最方便简单的是深度混淆,它不会完全防止反编译,但是反编译出来的代码不仅是无法阅读,它根本就无法再编译,因为混淆的结果是各种方法名,类名,变量名全部变成数字代码或者各种特殊符号,它根本不符合代码规范。

组件加壳很好理解,它把你的程序和需要的系统库都用加密方式嵌入到一个程序包里。无法反编译。不但实现了加密加壳,同时实现了all in one的脱离系统框架环境运行。

其它的几种就是各种加密和技术的混合了,