为防止Unity 3D的dll代码被反编译,可对其进行加密,然后在libmono.so中添加解密代码,对mono源码重新编译打包出libmono.so替换项目中的so之后,项目便可正常运行。
但实际操作过程中,mono源码编译十分容易出错(步步掉坑啊 T_T~~~),几经周转,终于在CentOS6.6(32位)系统下搞定了。记录详细步骤如下:
1、对dll加密:
(1)先将Unity中项目代码导出为Android工程,找到要加密的dll,位于\assets\bin\Data\Managed\Assembly-CSharp.dll。
(2)用VS建立控制台应用程序,将要加密的dll放置于工程目录中,并进行加密(比如下图代码将dll转换成字节流并将字节偏移1位)。
加密后的dll用反编译工具打开会报错。至此加密已经搞定,接下来重头戏就是修改mono源码并重编译了~
2、在CentOS 6.6中修改mono源码并重编译
这是一个漫长的征途,咱们从头一步一步来:
(1)安装CentOS虚拟机
此处建议安装CentOS 6.6 32位虚拟机,之前试过Ubuntu的32位跟64位,始终没能成功编译。CentOS虚拟机种子下载地址:
http://pan.baidu.com/s/1qWmTbx6
(2)下载安装Xshell(该步骤可省略)
“工欲善其事必先利其器”,因为Xshell操作起来比较方便,所以此处有安装Xshell跟Xftp,心急的童鞋可以略过。
Xshell和Xftp下载地址:
http://pan.baidu.com/s/1jGKpmCI
如果打算也用Xshell操作的话,记得将Backspace按键重新设置一下,因为默认该按键不是退格删除,用起来很心塞。设置方法:点击“文件”-“属性”,在打开的窗口中选择“键盘”,然后在右侧的BACKSPACE键序列中勾选“ASCII 127”即可。参见下图:Xshell安装完新建连接,输入CentOS的IP地址进行连接,成功连接后就可以直接在Xshell窗口中操作虚拟机了。
<