首先这篇文章参考的是:

Unity3D-重新编译Mono加密DLL

Unity3D研究院之Android加密DLL与破解DLL .SO(八十一)

接着说一下我自己编译的过程步骤

编译平台:虚拟机OS X Yosemite

编译mono版本:mono-unity-4.6

NDK版本:android-ndk-r9

JDK版本:jdk1.8.0_20

工具清单以及下载地址(该***的***):

android-ndk-r9

JDK for Mac

mono-unity-4.6

准备工作:

brew的安装:打开终端输入ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

要输入密码的直接输入密码

接着安装autoconf automake libtool pkg-config,直接在终端依次输入

brew install autoconf

brew install libtool

brew install pkg-config

配置环境:

在终端中输入pico .bash_profile 打开环境配置表,填入以下配置,路径自己换成自己的

export PATH=${PATH}:/Users/admin/Desktop/android-ndk-r9
NDK_ROOT=/Users/admin/Desktop/android-ndk-r9
ANDROID_NDK_ROOT=/Users/admin/Desktop/android-ndk-r9
export NDK_ROOT
export ANDROID_NDK_ROOT
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/contents/home

接着.contrl + x 保存一下,再输入 Y确认,最后来个enter

修改sh脚本

修改/mono-unity-4.6/external/buildscripts/build_runtime_android.sh

约73行处:

把-fpic -g -funwind-tables改成-fpic -O2 -funwind-tables

约152行处:

clean_build "$CCFLAGS_ARMv5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
clean_build "$CCFLAGS_ARMv6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"

改成

#clean_build "$CCFLAGS_ARMv5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
#clean_build "$CCFLAGS_ARMv6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"

修改

约70行处:把

-fpic -g \改成-fpic \

添加解密代码:

在/mono-unity-4.6/mono/metadata/image.c中找到mono_image_open_from_data_with_name(约1077行处),在函数头部加入以下代码

if(name != NULL)
{if(strstr(name,"Assembly-CSharp.dll")){data[0]-=1;}
}

完成添加后得到如下图所示:

开始编译:

把/mono-unity-4.6/external/buildscripts/build_runtime_android.sh复制到/mono-unity-4.6根目录下

打开终端,进入/mono-unity-4.6根目录,执行./build_runtime_android.sh

编译结束:

等待5分钟左右,提示编译成功后,进入/mono-unity-4.6/builds/目录下找到armv7和x86对应的.so文件,把他们复制到你的unity4.6.x版本的.so目录下替换掉旧的(旧的记得做下备份),如我的windows下unity4.6.9的目录是这样的

C:/Program Files (x86)/Unity/Editor/Data/PlaybackEngines/androidplayer/release/libs/armeabi-v7a/libmono.so

转载于:https://www.cnblogs.com/xijianchui/p/5242527.html

一次编译libmono.so的记录相关推荐

  1. 【Unity】安卓加密编译libmono.so成功失败记录(unity2017已成功编译)

    2022年8月14日01:30:44更新 [Unity3D]unity-mono编译libmono.so成功_两水先木示的博客-CSDN博客 2022年8月13日更新(目前看起来好像最接近可行的方案) ...

  2. Mac 下编译 libmono.so 和 DLL 加密详解

    Unity 打出的安卓包为了防止反编译,需要对 Assembly-CSharp.dll 加密处理.Assembly-CSharp.dll 是由 libmono.so 运行时读取然后在 mono 虚拟机 ...

  3. ROS noetic 安装编译Cartographer踩坑记录

    ROS noetic 安装编译Cartographer踩坑记录 安装编译工具 sudo apt-get update sudo apt-get install -y python-wstool pyt ...

  4. RV1126 SDK编译错误及解决记录

    RV1126 SDK编译错误及解决记录 1:错误: you need to install 'unbuffer' (from package expect or expect-dev) log sav ...

  5. 【Unity3D】unity-mono编译libmono.so成功

    目录 文章最终成功编译出libmono.so如下图所示,历时9天 一.下载文件配置环境 二.下载Unity-Mono库 三.正式开始编译libmono.so 1.libmono.so编译文件基础说明 ...

  6. 记一次编译Cesium踩坑记录

    记一次编译Cesium踩坑记录 cd cesium npm install npm install express --save npm install compression --save npm ...

  7. CEF编译遇到的问题记录

    在使用vs2015编译cef官方代码的时候遇到很奇怪的问题, 我用官方的demo cefsimple例子程序编译debug版本 可以正常编译打开网页 正常的打开 我把官方的例子单独创建一个新的项目编译 ...

  8. 源码编译安装git过程记录

    工作上需要使用一台装有银河麒麟的操作系统的计算机.这台计算机cpu是arm架构的并且没有预装git.下面介绍我如何在这样一台预装软件较少的计算机上用源码安装git 目录 1 源码安装autoconf ...

  9. 【编译原理】活动记录

    活动与活动记录 概念: 过程的一次执行称为过程的一次活动 把过程的一个活动所需要的信息组成的一块连续的存储单元 ,称为活动记录 理解: 一个活动所需要的信息的每个数据项有相同的生存周期,因此,将它们组 ...

最新文章

  1. 解读ASP.NET 5 MVC6系列(10):Controller与Action
  2. 问题 1462: [蓝桥杯][基础练习VIP]Huffuman树
  3. PHP iconv 解决utf-8和gb2312编码转换问题
  4. python爬取某人所有微博_Python爬取博客的所有文章并存为带目录的word文档(实例67)
  5. 10进制转62进制 java_两种方法实现10进制和62进制互转 | 学步园
  6. 7-26 单词长度 (15 分) python实现
  7. php 复制文件夹并压缩到最小_php实现对文件压缩简单的方法
  8. 在多个线程中使用QNetworkAccessManager
  9. 【云原生 | Envoy 系列】--Envoy原理
  10. 小米Recovery线刷精灵 v1.0.0 破解版
  11. win7 iis php mysql_windows7和iis配置的php phpinfo()中没有mysql组件
  12. 伯恩光学赴港:背靠苹果、小米,能掀起多大资本浪花?
  13. 0x7c9300e8 0x7c9300e8错误
  14. Vue3中setup前写async页面不显示
  15. SMG、东方明珠新媒体战略推进一周年;百度营销联合多品牌方举办开放麦;驭势科技推出自动驾驶新产品UiBox | 全球TMT...
  16. composer 指定PHP版本
  17. 战略制定4大关键要点
  18. 基于小样本量的水下图像识别
  19. 一文搞懂——软件模拟SPI
  20. STM32+收发器实现CAN和485总线

热门文章

  1. do while循环语句_Python 自学笔记 - while 循环语句
  2. 谈谈InnoDB下的记录锁,间隙锁,next-key锁
  3. 嵌入式linux 分区挂载,嵌入式linux系统的开发——文件系统的分区和挂载
  4. c语言获取时间并存储,如何在C程序中获取日期和时间值?
  5. 华为与思科网络产品详细比较
  6. java map套arraylist,在Java中的HashMap和ArrayList的区别?
  7. 一图看懂云栖大会「云原生」重磅发布
  8. linux 中断程序设计,Linux中断编程
  9. NFS服务器主配置文件名,NFS服务器的搭建与配置
  10. jsp到java xml配置,JSP中web配置:web.xml