Android、IOS(暂定),Android、IOS(暂定)公海赌船710

加密条件

发动机版本:Unity3D 5.3.4 及重新高版本 (使用Mono而并非IL2CPP)

操作系统:CentOS 6.2(Final)

加密环境:Android、IOS(暂定)

加密目的:C#源代码(dll文件)

解密方法:libmono.so (重点:插足解密算法不分畛域编译此文件)

加密条件

发动机版本:Unity3D 5.3.4 及重新高版本 (使用Mono而并非IL2CPP)

操作系统:CentOS 6.2(Final)

加密环境:Android、IOS(暂定)

加密目标:C#源代码(dll文件)

解密方法:libmono.so (重点:插手解密算法人己一视编译此文件)

加密底目地

.NET Reflector等倒编译工具 不能通过对dll反编译得到源码

加密的目地

.NET Reflector等倒编译工具 不能透过对dll反编译得到源码

注意事项

dll的加密算法和libmono.so解密算法一致

注意事项

dll的加密算法和libmono.so解密算法一致

思路分析

公海赌船710 1

最紧要:我们得对libmono.so重编译,参加我们的解密算法。

思路分析

公海赌船710 2

首要:大家得对libmono.so重编译,参预大家的解密算法。

预备条件

备条件

编译系统:linux或mac os

自家之编译环境:centos 6.2 Final,指出以linux或mac os中编译 libmono.so

编译系统:linux或mac os

本人的编译环境:centos 6.2 Final,提议在linux或mac os中编译 libmono.so

linux安装运行库

linux安装运行库

git

于编译过程遭到,可能需要通过git获取某些运行库。

查是否安装git:git –version

CentOS7 yum
安装git

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

git

于编译过程中,可能要经git获取某些运行库。

查阅是否安装git:git –version

CentOS7 yum
安装git

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

其它package

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

glib >= 2.0  这些一向安装失利

其它package

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

glib >= 2.0  这多少个一贯安装失利

centos安装软件

在root权限下,通过以下命令来安软件:

yum install [nginx][php][php-fpm][mariadb][mariadb-server][mysql][mysql-server]...

centos安装软件

每当root权限下,通过以下命令来设置软件:

yum install [nginx][php][php-fpm][mariadb][mariadb-server][mysql][mysql-server]...

Unity安装Android模块

管已经安装Unity引擎,并且Android模块已装,Android
SDK已装并改进,保证得打包APK

Unity安装Android模块

确保已经安装Unity引擎,并且Android模块已安装,Android
SDK已安装并更新,保证得打包APK

规范/测试工程

使Unity成立一个加密测试项目或正规项目,用来用加密

正规/测试工程

选用Unity创造一个加密测试项目或专业项目,用来用加密

Unity mono

unity的mono和原生mono有些不均等,所以需要去github拉取unity的mono库

https://github.com/Unity-Technologies/mono

Unity mono

unity的mono和原生mono有些不一样,所以待去github拉取unity的mono库

https://github.com/Unity-Technologies/mono

monobuildtools

unity mono打包工具

https://github.com/Unity-Technologies/monobuildtools

monobuildtools

unity mono打包工具

https://github.com/Unity-Technologies/monobuildtools

Android SDK Tool/Android6.0

自利用Unity5.3.4于windows上打包apk,需要android sdk
tool版本为23,Android6.0,所以一律要先准备好环境

公海赌船710 3

Android SDK Tool/Android6.0

自我使用Unity5.3.4在windows上打包apk,需要android sdk
tool版本也23,Android6.0,所以同样要预准备好条件

公海赌船710 4

Android打包工具

Android Studio:http://www.androiddevtools.cn/
或者:http://tools.android-studio.org/

Eclipse:https://marketplace.eclipse.org/content/android-development-tools-eclipse

Andmore – Eclipse Android
Tooling:https://projects.eclipse.org/projects/tools.andmore

Android打包工具

Android Studio:http://www.androiddevtools.cn/
或者:http://tools.android-studio.org/

Eclipse:https://marketplace.eclipse.org/content/android-development-tools-eclipse

Andmore – Eclipse Android
Tooling:https://projects.eclipse.org/projects/tools.andmore

android对应的NDK版本

查阅路径:external/buildscripts/build_runtime_android.sh

https://github.com/Unity-Technologies/mono/blob/unity-5.3/external/buildscripts/build_runtime_android.sh

以文件的直达半片就可以看到要之NDK版本,我当2016-06-25
clone的,需要之NDK版本也r10e

android对应的NDK版本

查阅路径:external/buildscripts/build_runtime_android.sh

https://github.com/Unity-Technologies/mono/blob/unity-5.3/external/buildscripts/build_runtime_android.sh

在文书之达标半局部就可以看到需要的NDK版本,我于2016-06-25
clone的,需要的NDK版本为r10e

android-ndk 下载

基于android和unity的本子不同,需要之ndk版本为殊,我此时盖2016-06-25
clone的堆栈为例,需要ndk-r10e

android-ndk 下载

基于android和unity的本不同,需要之ndk版本也差,我此刻盖2016-06-25
clone的仓库为例,需要ndk-r10e

x64

android-ndk-r10e-linux-x86_64.bin:http://pan.baidu.com/s/1dDAqnK1 

x64

android-ndk-r10e-linux-x86_64.bin:http://pan.baidu.com/s/1dDAqnK1 

x86

android-ndk-r10e-linux-x86.bin:http://pan.baidu.com/s/1sjoneRr

安android ndk环境变量

x86

android-ndk-r10e-linux-x86.bin:http://pan.baidu.com/s/1sjoneRr

装android ndk环境变量

反编译工具测试加密结果

倒编译工具测试加密结果

.Net反编译工具

关键加密对象是Assembly-C夏普.dll,所以可以准备几放缓.Net反编译工具来测试加密结果

脚举例.net的反编译工具

.NET
Reflector:http://www.red-gate.com/products/dotnet-development/dotnet-developer-bundle/

.Net反编译工具

紧要加密对象是Assembly-CSharp.dll,所以可以准备几迟迟.Net反编译工具来测试加密结果

上边举例.net的反倒编译工具

.NET
Reflector:http://www.red-gate.com/products/dotnet-development/dotnet-developer-bundle/

C语言反编译工具

假如对libmono.so也加密的话,这还欲准备几慢C语言反编译工具

脚举例C语言反编译工具

ida pro

官网:https://www.hex-rays.com/products/ida/

代销商:http://xlsoft.com.cn/category/%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/

C语言反编译工具

如若对libmono.so也加密的话,这还需预备几磨蹭C语言反编译工具

下举例C语言反编译工具

ida pro

官网:https://www.hex-rays.com/products/ida/

代销商:http://xlsoft.com.cn/category/%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/

libmono.so(解密方法)

libmono.so(解密方法)

加密C#的dll

遵照自己的实际情状,对导出的
assets/bin/Data/Managed/Assembly-CSharp.dll  举行加密

加密C#的dll

据悉自己之其实意况,对导出的
assets/bin/Data/Managed/Assembly-CSharp.dll  进行加密

在so中解密dll

Mono加载dll的代码的公文在/mono/metadata/image.c

在so中解密dll

Mono加载dll的代码的文书在/mono/metadata/image.c

mono_image_open_from_data_with_name

打开image.c,找到 mono_image_open_from_data_with_name
方法,把解密方法勾勒以这。此方大概在1807推行

MonoImage *
mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)
{
    MonoCLIImageInfo *iinfo;
    MonoImage *image;
    char *datac;

    if (!data || !data_len) {
        if (status)
            *status = MONO_IMAGE_IMAGE_INVALID;
        return NULL;
    }
     //在这儿对加密过的dll进行解密
    if (strstr(name, “Assembly-CSharp.dll”) != NULL)
    {
        //这里是解密过程,我们采用的是xxtea加解密算法。
    }

    //.....
    return register_image (image);
}

mono_image_open_from_data_with_name

打开image.c,找到 mono_image_open_from_data_with_name
方法,把解密方法勾勒以这时。此方法大概在1807实践

MonoImage *
mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)
{
    MonoCLIImageInfo *iinfo;
    MonoImage *image;
    char *datac;

    if (!data || !data_len) {
        if (status)
            *status = MONO_IMAGE_IMAGE_INVALID;
        return NULL;
    }
     //在这儿对加密过的dll进行解密
    if (strstr(name, “Assembly-CSharp.dll”) != NULL)
    {
        //这里是解密过程,我们采用的是xxtea加解密算法。
    }

    //.....
    return register_image (image);
}

遇上的题材

赶上的题目

AndroidManifest.xml Error

Unity导出Android Project之后,AndroidMainifest.xml中出一行会报Error:
android:debuggable=”false” ,不可能分辨。

解决办法:http://stackoverflow.com/questions/24204140/android-error-when-i-set-androiddebuggable-false-or-true

公海赌船710,AndroidManifest.xml Error

Unity导出Android Project之后,AndroidMainifest.xml中生一行会报Error:
android:debuggable=”false” ,无法辨别。

解决办法:http://stackoverflow.com/questions/24204140/android-error-when-i-set-androiddebuggable-false-or-true

CentOS安装软件 Error

每当CentOS上安装有软件时碰到:Errno 256] No more mirrors to try

保证系统已经连接网络,输入以下命令(功用:重建缓存)

yum clean all
yum makecache

CentOS安装软件 Error

于CentOS上设置有软件时遇到:Errno 256] No more mirrors to try

保险系统已连网络,输入以下命令(功用:重建缓存)

yum clean all
yum makecache

Linux安装ndk.bin?

资料:Linux下安装JDK-(bin版) 
http://blog.csdn.net/sonnet123/article/details/9290561

装步骤

以下命令依旧ROOT身份运行

Linux安装ndk.bin?

资料:Linux下安装JDK-(bin版) 
http://blog.csdn.net/sonnet123/article/details/9290561

安步骤

以下命令如故ROOT身份运行

1. 设置ndk-文件拷贝

#mkdir /usr/ndk 
#cd /usr/ndk 
#cp /xxxx/android-ndk-r10e-linux-x86.bin /usr/ndk

1. 安ndk-文件拷贝

#mkdir /usr/ndk 
#cd /usr/ndk 
#cp /xxxx/android-ndk-r10e-linux-x86.bin /usr/ndk

2. 装ndk-安装以及部署环境变量

  1. ./android-ndk-r10e-linux-x86.bin   成功后极输出 伊芙(Eve)rything is OK

2. 安ndk-安装以及配置环境变量

  1. ./android-ndk-r10e-linux-x86.bin   成功后极输出 伊芙(Eve)rything is OK

3. 装置ndk-安装成功

Everything is Ok
[root@workstation ndk]# source /etc/bashrc
[root@workstation ndk]# echo $ANDROID_NDK_ROOT
/usr/ndk/android-ndk-r10r
[root@workstation ndk]#

3. 安ndk-安装成功

Everything is Ok
[root@workstation ndk]# source /etc/bashrc
[root@workstation ndk]# echo $ANDROID_NDK_ROOT
/usr/ndk/android-ndk-r10r
[root@workstation ndk]#

提示要ndk9?

翻参考资料caption的改动

提示要ndk9?

翻看参考资料caption的改

./configure没有十分文件要目录

查看README文件

./configure没有特别文件或者目录

查看README文件

tar.xz安装

Linux下解压tar.xz格式压缩文件

资料:http://blog.csdn.net/longerzone/article/details/8707118

tar.xz安装

Linux下解压tar.xz格式压缩文件

资料:http://blog.csdn.net/longerzone/article/details/8707118

安装glib

我设置的凡glib-2.48.1

1 ./configure  2  make  3 make install

此地configure首要是布局并生成Makefile文件,make首假设针对性程序举行编译,make
install重假若指向编译好之先后开展安装

资料:http://www.linuxfromscratch.org/blfs/view/svn/general/glib2.html

安装glib

本人设置之凡glib-2.48.1

1 ./configure  2  make  3 make install

此处configure紧假诺布并生成Makefile文件,make重假使指向先后开展编译,make
install重假若针对编译好之主次开展设置

资料:http://www.linuxfromscratch.org/blfs/view/svn/general/glib2.html

安装glib-提醒缺乏libffi

非领会大家注意到无,在configure时,出现短缺相关库时解决智都得以应用
库-devel 解决,那么是
devel是呀也?devel是只开发包,只有在开发顺序时才会晤设置。里面富含了腔文件、以及开发用到的相关库和
扶助文件等等。一般设置某些工具的上即便会见并发

glib的安装:http://blog.chinaunix.net/uid-26126915-id-3368644.html

设置glib-指示缺乏libffi

不清楚我们小心到没有,在configure时,出现缺失相关库时解决措施都可以动用
库-devel 解决,那么那多少个
devel是什么啊?devel是独开发包,只有当出顺序时才会装。里面包含了头文件、以及支付用到之相关库和
扶助文件等等。一般设置某些工具的早晚虽然会面并发

glib的安装:http://blog.chinaunix.net/uid-26126915-id-3368644.html

安装glib依赖库

libffi

下载,解压,执行 ./configure make make install 实行安装

libpcre >=8.13

./configure --with-prce=/usr/local/prec/

安装glib依赖库

libffi

下载,解压,执行 ./configure make make install 举办安装

libpcre >=8.13

./configure --with-prce=/usr/local/prec/

tar.bz2安装

命令:tar -xjvf xxx.tar.bz2 来解压,拿到解压后底目再进一步安装

tar.bz2安装

令:tar -xjvf xxx.tar.bz2 来解压,得到解压后的目录再进一步安装

另错误

旁错误

1. 文件格式错误

/bin/bash^M: bad interpreter:
没有好文件要目录

办法二:在windows下用Notepad++修改格式为unix

1. 文件格式错误

/bin/bash^M: bad interpreter:
没有很是文件或者目录

道二:在windows下用Notepad++修改格式为unix

PKG_CONFIG_PATH environment

假若安排 PKG_CONFIG_PATH

PKG_CONFIG_PATH environment

假诺安排 PKG_CONFIG_PATH

Linux操作知识

查阅系统版本

lsb_release –a

查看linux系统位数

getconf LONG_BIT 输出32则是x86,输出64则是x64

给shell赋于root权限

  1. 输入 su  2.输入root密码 回车

执行脚本:chmod 700 hello.sh

文件拷贝

cp [选项] 源文件要目录 目标文件或者目录

Linux操作知识

查系统版本

lsb_release –a

翻linux系统位数

getconf LONG_BIT 输出32则是x86,输出64则是x64

给shell赋于root权限

  1. 输入 su  2.输入root密码 回车

举行脚本:chmod 700 hello.sh

文本拷贝

cp [选项] 源文件或者目录 目的文件要目录

访问共享文件夹

1.virtual box设置共享文件夹

  1. 即无异于步是在mnt下开创share目录,可免创建

    mkdir /mnt/share

步骤3,有一定量栽艺术

倘使你望将共享目录在share下,并且mnt也开创 了share目录:
    #sudo mount -t vboxsf 共享文件夹名/mnt/share ,比如我之:

mount -t vboxsf mono/mnt/share

若指望一贯放在mnt下:

    #sudo mount -t vboxsf 共享文件夹名/mnt,比如我之:

mount -t vboxsf mono/mnt
  1. 以 文件系统 – mnt 下就可以看到共享内容了

访问共享文件夹

1.virtual box设置共享文件夹

  1. 即时同一步是在mnt下开创share目录,可免创建

    mkdir /mnt/share

步骤3,有星星点点栽格局

使您期望将共享目录在share下,并且mnt也创 了share目录:
    #sudo mount -t vboxsf 共享文件夹名/mnt/share ,比如自己的:

mount -t vboxsf mono/mnt/share

卿要直接在mnt下:

    #sudo mount -t vboxsf 共享文件夹名/mnt,比如自己的:

mount -t vboxsf mono/mnt
  1. 当 文件系统 – mnt 下就可以看到共享内容了

cd 目录操作

为root用户登录后,默认是以手上用户文件夹内,往上超过到文件主目录中:cd
../../

cd 目录操作

为root用户登录后,默认是于当下用户文件夹内,往上跳到文件主目录中:cd
../../

virtualbox 虚拟和主机粘贴板共享

  1. 从今virtualbox官网下载对许版本的充实工具确保,举行安装

  2. 于linux中加载工具包 ios镜像,举行安装

  3. 虚拟机和主机可以共享粘贴板内容了

virtualbox 虚拟与主机粘贴板共享

  1. 从今virtualbox官网下载对承诺版本的增工具确保,实行设置

  2. 在linux中加载工具包 ios镜像,进行设置

  3. 虚拟机和主机可以共享粘贴板内容了

Centos安装软件

CentOS6.X安装QQ2012

终得以以centos下用QQ啦!

Centos
YUM更新软件:http://jingyan.baidu.com/article/19020a0ac84c3d529d2842ee.html

centos安装软件:https://www.centos.org/forums/viewtopic.php?t=871      
查找某同近似软件:yum list *Firefox*

Centos安装软件

CentOS6.X安装QQ2012

毕竟得以centos下以QQ啦!

Centos
YUM更新软件:http://jingyan.baidu.com/article/19020a0ac84c3d529d2842ee.html

centos安装软件:https://www.centos.org/forums/viewtopic.php?t=871      
查找有平近似软件:yum list *Firefox*

文献资料

Unity 自动导出 AndroidStudio
项目

 

文献资料

Unity 自动导出 AndroidStudio
项目

 

Perl语言(*.pl文件)

perl是解释性语言,
可用于linux/unix系统。可以了解呢跟windows下之bat一样。

  • *.pl 是perl语言的库文件,经常用 require xx.pl; 来加载
  • *.pm 是perl语言的模块文件,平常用 use module; 来加载
  • *.plx 是perl语言的剧本文件

运行: ./路径/文件名 (后面的“./”表示运行命令)

结束: ctrl + c

注释

单行:#发端,有个不等perl程序第一履啊是#开头

大抵行:=pod 注释多尽代码块 =cut

Perl语言(*.pl文件)

perl是解释性语言,
可用于linux/unix系统。能够知晓吧跟windows下的bat一样。

  • *.pl 是perl语言的库文件,平常用 require xx.pl; 来加载
  • *.pm 是perl语言的模块文件,日常用 use module; 来加载
  • *.plx 是perl语言的台本文件

运行: ./路径/文件名 (前面的“./”表示运行命令)

结束: ctrl + c

注释

单行:#开,有只不同perl程序第一履行啊是#开头

差不多尽:=pod 注释多实践代码块 =cut

参考资料

Captain

Unity3d 加密 Assembly-CSharp.dll (Android平台)
全记录:http://blog.csdn.net/huutu/article/details/50829828

技能人生

Unity3D-重新编译Mono加密DLL

http://www.luzexi.com/unity3d/%E6%B8%B8%E6%88%8F%E6%9E%B6%E6%9E%84/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF/2015/04/11/Unity3D-%E9%87%8D%E6%96%B0%E7%BC%96%E8%AF%91Mono%E5%8A%A0%E5%AF%86DLL.html

雨松

Unity3D研究院的Android加密DLL与破解DLL
.SO(八十一):http://www.xuanyusong.com/archives/3553

其它

Unity 3d脚论加密方案:http://www.cppcourse.com/u3d-encryption.html

参考资料

Captain

Unity3d 加密 Assembly-CSharp.dll (Android平台)
全记录:http://blog.csdn.net/huutu/article/details/50829828

艺人生

Unity3D-重新编译Mono加密DLL

http://www.luzexi.com/unity3d/%E6%B8%B8%E6%88%8F%E6%9E%B6%E6%9E%84/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF/2015/04/11/Unity3D-%E9%87%8D%E6%96%B0%E7%BC%96%E8%AF%91Mono%E5%8A%A0%E5%AF%86DLL.html

雨松

Unity3D探讨院的Android加密DLL与破解DLL
.SO(八十一):http://www.xuanyusong.com/archives/3553

其它

Unity 3d脚论加密方案:http://www.cppcourse.com/u3d-encryption.html

进度

已完成

  1. ndk安装以及部署好
  2. unity mono库clone到本地

相见问题

  1. 安gtk卡在 libffi 版本太没有

进度

已完成

  1. ndk安装以及安排好
  2. unity mono库clone到本地

相遇题目

  1. 设置gtk卡在 libffi 版本太没有

本身之条件

公海赌船710 5

 

自我的环境

公海赌船710 6

 

IL2CPP

日后的种最为可能会面采取IL2CPP。淌假若IL2CPP的语,就凭需及时同样仿照加密了,因为经IL2CPP生成的包中并无存在dll,而是二进制文件。

复多关于IL2CPP的资料,可以查Unity官方的材料,或者我后边的作品:http://www.cnblogs.com/zhaoqingqing/p/3842690.html

IL2CPP

自此的花色最为可能会面动用IL2CPP。假如是IL2CPP的讲话,就管需及时同样法加密了,因为经IL2CPP生成的包中并无有dll,而是二进制文件。

再度多关于IL2CPP的资料,可以翻Unity官方的材料,或者自己前的作品:http://www.cnblogs.com/zhaoqingqing/p/3842690.html

相关文章