我们用C#写完代码后,无论想做热更新,还是想加密防破解,都可以把代码编成dll库,然后用第三方工具做混淆
但我们做混淆时要注意,混淆后要unity能识别,正确运行,并且外部也能正常调用,所以思路是只混淆私有函数、私有变量,最好还能混淆函数内的逻辑,目前只找到Dotfuscator4.2破解版本能满足我的需求
1首先我们把dll拖到input里 选中Library,这样会只混淆私有的变量名和方法名
2我们在看下Options,这里是全局设置,我们只开启流程混淆和重命名,选No,其它禁用Yes,其它默认(最后一个string encryption是字符串混淆,跟据需求选择)
3设置重命名排除,设置过Library后,除了私有的,其它的变量名和函数名都不会被混淆重命名,但在这里,我们还可以将任何不想被重命名的勾选上,然后就会被排除掉
4设置依赖库,有的时候我们的dll可能会依赖其它dll,这里我们需要设置被依赖的dll所以目录,不然混淆会失败
5设置输出目录,然后点击,Build
PS:
1我们可以将经常需要混淆dll的配置保存成Dotfuscator的工程,其实就是一个xml文件,然后每次就不用设置了
2使用iTwenn时发现iTwenn不能被混淆,不然会执行不正确,所以需要在Rename里将iTwenn排除掉,注意所有的子项也要手动勾选,勾选父后,子项并不会自动勾选
3大多数时我们可以将不想被混淆的私有函数或私有变量,写成protected,这样就不用在Rename里排除也不会被混淆了
最后我们可以用ILSpy查看下混淆后的情况,发现public和protected的变量和方法都没被改变,private的方法和变量被混淆了,函数内的逻辑已经被混淆,这样就达到了我们既想能被unity正确运行,又防破解的目的
别用了不有问题,当dll大了后,混淆后unity识别有可能会有问题,造成unity崩溃
---------------------
作者:FoxGameY
来源:CSDN
原文:https://blog.csdn.net/u014635337/article/details/45439877
版权声明:本文为博主原创文章,转载请附上博文链接!