.Net 代码混淆的一些注意事项

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 19:31   1492   0
既然.Net总能够被人破解, 那么我们只好把重要的计算和功能放在server上通过webservice提供了,但是客户端的代码总还得混淆一下,否则别人反编译一下不是全部知道底细了,所以我只使用code protect tools的混淆功能而不是加密,毕竟再怎么加密也是可以破解掉的。

以XENOCODE为例(其实我只使用了这个,毕竟相信老牌软件,心里有底些),它的select pattern相当不错,经过一段时间的摸索,找到一些需要注意的地方:

1、Enumeration一定不要重命名:毕竟我们还有很多地方会使用Enum.Parse(string)以及直接tostring得到名称
2、Reference和Interface最好不要重命名
3、public, protect的不能重命名:因为public会被外部使用,而且有些还是virtual override或是implicitly implement, 而protect的会被其它的继承类使用
4、需要反射的最好单独一个assembly,不要去混淆:毕竟这个风险太大,很难去一个个选取哪些要哪些不要重命名,比如说有的ORM中需要反射属性和字段的实体类定义
5、资源类Properties.Resources修改为public(这样可以批量设置public的不要重命名)
因为这段代码
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XXX.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
否则的话就会出现:
Could not find any resources appropriate for the specified culture or the neutral culture.

其它:
字符串加密这个不会出错,只是有些性能损失而已
流程混淆xenocode还是很安全的,我一般使用1~2级就可以了,毕竟有时候出错了我还得打开混淆后的代码查找位置
其它的防止反编译的选项我也没有设置,因为我自己还得用reflector呢。

转载于:https://www.cnblogs.com/progame/archive/2007/08/28/872841.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP