应用文档
应用文档
应用文档 首页 > 应用文档

实测超级狗外壳加密.Net程序后对抗反编译工具的效果

更新时间:2020-08-24 15:06:58   点击量:
C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性。同时也C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。而作为一款.net 语言,也有它让开发者非常头疼的问题——就是很容易被反编译。
 
泰雷兹从.net产品面市以来就注意到这个问题,其在后续的产品更新中,就加入了对.NET程序的反编译保护。
 
下面以用户使用量最多的一款产品超级狗实测对C#外壳加密后在几款反编译工具中的表现。
 
1、程序样本
超级狗开发包自带的32位C# demo程序dot_NET2_bounce.exe,以其中的一个类/方法move()作为测试内容。
 
2、原始程序在.NET Reflector 8.5中显示的内容
把dot_NET2_bounce.exe拖进反编译工具.NET Reflector 8.5,可以清楚地看到move()方法的代码。


3、用超级狗外壳工具对此demo程序进行外壳加密,加密时选择对move()做代码加密。


4、加密后的程序在.NET Reflector中的显示结果
将加密后的程序,拖入.NET Reflector,找到对应的move(),可以看到软件无法解析该方法,直接报错。


5、加密后的程序在dnspy中的显示结果
再将加密后的程序,拖入到另外一款反编译工具dnspy 6.14中,看看会是什么结果呢?
可以看出代码是显示出来了,但已经完全看不出原始程序本来的面目了。

综上所述,C#程序经过超级狗外壳加密后,会对对应的类/方法做代码处理,以达到隐藏代码的目的。需要注意的是,要加密哪个类或方法,需要在加密界面里手动选择对应的方法,选项有代码混淆和代码加密两种,其中混淆能起到更好的代码保护作用,但也有可能会影响程序运行效率。