unity代码加密for Android,mono编译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity代码加密for Android,mono编译相关的知识,希望对你有一定的参考价值。

uinty3d加密推荐几篇比较好的博客链接:

http://www.cppcourse.com/u3d-encryption.html

http://www.xuanyusong.com/archives/3553

http://m.blog.csdn.net/blog/yy405145590/41205283

http://blog.sina.com.cn/s/blog_799860f90102vp0l.html

 

《一》加密原理
1、unity3d是基于mono的,而mono是开源的,我们重编mono,并加入加密和解密的算法,生成so文件,替换unity工程中的so。
《二》NDK安装

1.下载unity对应版本的mono源代码,官方地址:https://github.com/Unity-Technologies/mono/

 技术分享

技术分享

2.重编mono,因为作者用的win7系统,开始是用cygwin,结果各种失败,所以就装了虚拟机VMware Workstation,然后你需要下载一个Linux的系统ISO镜像文件,笔者当时下载的是ubuntu-14,大小大概在1G左右,然后就是把镜像文件安装到虚拟机上咯~~安装后大概的样子是这样的技术分享

3.进入Ubuntu系统,我在Home目录里面新建了一个目录monobuild,打开Terminal命令行模式,

$ mkdir monobuild

然后把下载的mono源代码zip文件放到这个目录里面(只能从windows上拖到这个目录就可以了),这个时候输入

$ ls

就能看到有monobuild这个目录了

4.解压mono,进入monobuild目录

$ cd monobuild

执行解压命令

$ unzip mono-unity-4.6.zip

5.下载NDK安装包,这个时候你要看看/mono-unity-4.6/external/buildscripts/build_runtime_android.sh文件第13行左右看看unity用的NDK版本

 

然后到官网下载对应版本的NDK,安装

6.安装好后,ndk配置,输入

$ gedit ~/.bashrc

在打开的文件的末尾添加

export NDK_HOME=/home/anyq/monobuild/android-ndk-r9 
export PATH=$PATH:$NDK_HOME

其中NDK_HOME等号后面是的是ndk的路径,可以用pwd命令输出当前的路径查看

输入

$ source ~/.bashrc

使其立即生效.

7.ndk验证,输入

$ nkd-build

如果没有提示 commond not found就是成功了。

《三》SDK安装(可以不安装)

1.官网下载AndroidSDK,需要FQ,呵呵。。也放到monobuild目录。

2.这个时候需要解压,比我笔者下载的是 android-sdk_r24.3.3-linux.tgz ,输入

tar -zxvf android-sdk_r23.0.2-linux.tgz

3.和ndk一样在bashrc末尾加入

export ANDROID_HOME="/home/anyq/android-sdk-linux"

export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"
 《四》编译

1.拷贝 mono-unity-4.6/external/buildscript/build_runtime_android.sh 到   mono-unity-4.6/   根目录中。

2.切换到mono-unity-4.6/ 目录中,使用 root 运行 build_runtime_android.sh 

./build_runtime_android.sh  

3.会提示没有安装Git

sudo apt-get install git  

4.修改 build_runtime_android.sh Line 113 ,改为:

(cd "$KRAIT_PATCH_PATH" && perl ./build.pl)  

5.然后修改 mono-unity-4.6/external/android_krait_signal_handler/build.pl 

(这是脚本调用git clone过来的 https://github.com/Unity-Technologies/krait-signal-handler/)

删掉第一行 

#!/usr/bin/env perl -w  

6.继续运行出错,提示 ANDROID_NDK 版本不对,又要下载,下载又失败,修改成我们自己的版本。

找到build.pl ,修改BuildAndroid 函数里面的 r9 为 自己下载的版本  r10e  

7.修改android-ndk-r10e目录下的RELEASE.TXT

改为 :r10e 

8.external/android_krait_signal_handler/jni/Application.mk   文件

TOOLCHAIN_VERSION := clang3.3  改成 TOOLCHAIN_VERSION :=4.8  

9.

然后继续编译

提示没有 autoreconf

使用下面命令安装autoreconf:

sudo apt-get update  
sudo apt-get install autoconf  

同样的方法,顺便把下面的包都安装一下

* autoconf  
* automake  
* bison  
* gcc  
* gettext  
* glib >= 2.0  
* libtool  
* make  
* perl  

10.如果运气好就能编译成功了

 

  技术分享

可以看到 打包成功,lib在builds/embedruntions/android.

  

 

 

以上是关于unity代码加密for Android,mono编译的主要内容,如果未能解决你的问题,请参考以下文章

Unity Android加密DLL笔记

Unity3D初学加密技巧(反破解)

unity3d 怎样发布android程序

如何防止Unity3D代码被反编译

Unity3D代码加密防止反编译及资源加密

一次编译libmono.so的记录