如何实现“C# C/S软件加密(加壳)或混淆“”

-学无止境 诺基亚通信有限公司东莞分公司 软件工程师  2017-11-09 02:38:12
C#+WPF开发的C/S软件,求助如何对软件进行加密(加壳)或混淆?
我目前使用的混淆工具是Dotfuscator,但效果不理想,按照http://blog.csdn.net/l_serein/article/details/8614436 的配置方法做的。
混淆后的代码的方法名、属性、字段都没变,方法体内的内容还能看到,如下图所示。

...全文
936 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
凉皮粉 2019-08-27
引用 4 楼 mk_lucifer 的回复:
混淆混淆的是DLL文件,源码不混淆的,当然也有源码混淆工具,但是混的自己看不懂,你混淆他干嘛。。。混淆只针对自定义的类型,什么Application了Windows了是不能混淆的,这是公有成员,还是系统的DLL,肯定不行。。。你写的代码,没有自定的内容 ,比如没有使用个任何自定义的class,struct等等,混淆后自然和没混一样,他只针对本dll内定义的类和结构体进行混淆,Application Windows 还有各种.net的接口都不能。。。
你好想问一下你这里说的有源码混淆工具具体有知道些什么吗,一直在找但是没有找到
  • 打赏
  • 举报
回复
kampoo 2017-11-10
以前用C++ 实现过一个Java外壳加密程序,参考了一个开源的外壳程序并修改其中的类加载器为加密格式。大致思路对C#同样适用: 1. 用C++写一个外壳程序,可以加载C# DLL; 2. 选择某种加密算法如3DES等,将C# DLL加密为密文动态库,这样C# DLL就是一种不能被系统读取的文件格式了; 3. 外壳程序启动时,先解密C# DLL放到缓存里,然后加载执行。
  • 打赏
  • 举报
回复
mk_lucifer 2017-11-10
混淆混淆的是DLL文件,源码不混淆的,当然也有源码混淆工具,但是混的自己看不懂,你混淆他干嘛。。。混淆只针对自定义的类型,什么Application了Windows了是不能混淆的,这是公有成员,还是系统的DLL,肯定不行。。。你写的代码,没有自定的内容 ,比如没有使用个任何自定义的class,struct等等,混淆后自然和没混一样,他只针对本dll内定义的类和结构体进行混淆,Application Windows 还有各种.net的接口都不能。。。
  • 打赏
  • 举报
回复
mk_lucifer 2017-11-10
即使混淆了,代码是可以看到的,只是成员变量名字变的看不懂随机的字符串。。。局部变量不存在混淆,局部变量是反编译器起的名字,局部变量在C#的中间代码里实际上没名字的,所以无法反编译,反编译都是类似 array1, array2 反编译器自己起的名字。。。
  • 打赏
  • 举报
回复
mk_lucifer 2017-11-10
公有类型的公有成员不能混淆,如果你的类都是public,没办法,毕竟混淆了外部调用不了,public目的是让外部调用的,混淆了就调不了了。。。。不想让外部调用private, private修饰的class,内容是全部混淆的。。。 用public 修饰的class, 只混淆 private 和internal修饰的成员,有public 和protected修饰的不能混淆。。。
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-09 02:38
社区公告

让您成为最强悍的C#开发者