2级a做爰片免费网站,wordpress 大型站,做网页的app,做电商如何推广C#混淆心得
近期遇到混淆C#代码的需求#xff0c;在网上找了很多办法#xff0c;在此记录一下。
混淆的本质就是让代码变丑#xff0c;让别人看不懂。
为什么要混淆#xff1a;
1.保护核心代码
可以在一定程度上避免别人偷代码#xff0c;从而保护重要的部分#xf…C#混淆心得
近期遇到混淆C#代码的需求在网上找了很多办法在此记录一下。
混淆的本质就是让代码变丑让别人看不懂。
为什么要混淆
1.保护核心代码
可以在一定程度上避免别人偷代码从而保护重要的部分当然对大佬没用。但这对于C#来说是很难做到的毕竟C#的特性就很公开比如C#可以通过反射获取数据类型这是因为有元数据的存在。C#的程序集很容易被反编译就算混淆了代码编译成CIL之后都是一样能看清的因此如果想保护C#代码混淆是没有用的只能通过native code的方式将核心代码放到本地这样才能真正做到保护比如服务器就是如此。
但是为什么我还需要混淆C#代码呢我以前用lua写过mod当时就遇到需要混淆lua的需求这是因为mod上传后人们都可以看到源代码因为它是开源的。所以我这次混淆C#是为了避免某些能直接看到代码的人拿来做不好的事防那种混蛋应该足够了且对方水平很次故对C#混淆。
混淆C#还可以通过给dll加壳的方式但是其他程序就没法引用这个程序集了可以给本地的服务器程序加网上有很多第三方工具。
2.降低审核时的查重
游戏上架商店的时候需要审核如果跟其他游戏代码相似度过高就不能通过因此需要混淆降低重复。例如出于商业的目的很多公司会在同一平台上架多个同一游戏这样人们就能看到更多关于这个游戏的推广。或者上架一个测试用的游戏在里面进行各种实验确定效果后再更新到主游戏上这样就不会影响到主游戏了这种就叫马甲包。因此为了实现这种功能就需要用到混淆。特别是苹果ios上需要混淆oc代码。
原因主要就是上面两种还有就是可以压缩代码文本的体积比如开发的时候为了确保变量意图清晰可见会用比较长的名字命名混淆成abc这种就可以变短。
混淆常用的手段
1.生成垃圾代码把他们混在有用的代码里再把有用的代码改名这样就很难看出来那些代码是干嘛的了。
2.删除注释或者混淆注释直接删除还是太温柔了我试过改编码这样中文注释就都变成乱码效果不错但是不方便下面的混淆。替换或删行的时候容易把代码挤进注释里这样就会出问题。
3.修改变量名、文件名、目录名。可以使用正则表达式来匹配修改要留意一些不能修改的字段或类型。
4.将常量用一些很长很复杂的表达式替换比如让gpt生成一个结果是true的表达式
((5 3) (10 10) (true || false) (100 100) (hello ! world) (2 * 3 6) (15 % 5 0) (Math.Sqrt(16) 4) (DateTime.Now.DayOfWeek DayOfWeek.Thursday) (int.Parse(50) 50 100)然后就可以把所以true都可以替换成它。同理其他常量也可以这样混淆。
5.删除所有换行符或者将所有空格换成换行符效果都挺不错但后者容易把一些不能分开的也换了要确保能正常编译。
6.字符串加密可以用ase加密算法对字符串进行加密但要想办法让别人看不懂解密的方法。或其他替换字符串的方法比如转义字符。
7.基础类型展开比如将int替换成System.Int32那些很长的容器类替换后的效果就很不错。也可以把所有using删除然后所有类型写全称。
以上只是我发现的初步混淆还可以利用C#的各种特性等着你去发掘。
效果 注意要在本地保存一份正常的代码发出去的才混淆。
就先讲这么多吧。