参考文章:

Unity3D研究院之Android加密DLL与破解DLL .SO(八十一) | 雨松MOMO程序研究院

Unity3D研究院之Android二次加密.so二次加密DLL(八十二) | 雨松MOMO程序研究院

Unity 2019.4.0 Mono 编译以及加密 windows版_雾凇|Songs的博客-CSDN博客

Windows 下使用 mingw+msys 交叉编译 Android Unity Mono_weixin_30449453的博客-CSDN博客 Unity3D安卓导出包加密学习--加密libmono.so_GrimRaider的博客-CSDN博客

官方文章:

Compiling Mono on Windows | Mono

目录

一、C#代码加密解密

1.1 Window工程

① Cygwin 安装Cygwin

2022年8月1日更新:安装Mono环境

② git clone unity-mono源码工程(网上说是需选对应Unity版本,未测试)

GitHub - Unity-Technologies/mono: Mono open source ECMA CLI, C# and .NET mplementation.

③ 使用Visual Studio 2019打开mono目录下的\msvc\mono.sln生成解密文件

2. Android工程(2022年9月9日更新已完成)

二、热更代码&资源加密

三、混淆代码


一、C#代码加密解密

1.1 Window工程

Window工程:打出exe包后得到如下截图结构文件

前提概要:
        需要加密的文件:
        xxx_Data\Managed\Assembly-CSharp.dll(核心dll)
        有加密就会有解密,解密过程放到读取解析dll时,文件:            MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll

开始进入window加密制作流程:主要参考Unity 2019.4.0 Mono 编译以及加密 windows版_雾凇|Songs的博客-CSDN博客

① Cygwin 安装Cygwin

下载setup-x86_64.exe安装软件,打开cmd,先cd到setup-x86_64.exe所在目录执行。

setup-x86_64.exe -P autoconf,automake,bison,gcc-core,gcc-g++,mingw64-i686-runtime,mingw64-i686-binutils,mingw64-i686-gcc-core,mingw64-i686-gcc-g++,mingw64-i686-pthreads,mingw64-i686-w32api,mingw64-x86_64-runtime,mingw64-x86_64-binutils,mingw64-x86_64-gcc-core,mingw64-x86_64-gcc-g++,mingw64-x86_64-pthreads,mingw64-x86_64-w32api,libtool,make,python,gettext-devel,gettext,intltool,libiconv,pkg-config,git,curl,wget,libxslt,bc,patch,cmake,perl,yasm,unzip

这个过程大概是10分钟左右,因为它要下载一堆所需的文件,耐心等待。途中会让你选择2个导出目录,默认C盘,可选其他盘符,安装完毕后,在第一个你选择的导出目录下会有Cygwin.bat(桌面上也会出现Cygwin64 Terminal应用图标)执行它会打开一个命令行窗口,代表正常完成。

2022年8月1日更新:安装Mono环境

https://www.mono-project.com/docs/getting-started/install/windows/

安装完毕后按wins键(左下角开始)输入mono搜出

输入mono --version执行成功,注意这个C:\Program Files\Mono并不是一个文件,而是Mono环境命令行窗体。

② git clone unity-mono源码工程(网上说是需选对应Unity版本,未测试)

GitHub - Unity-Technologies/mono: Mono open source ECMA CLI, C# and .NET mplementation.

如果你是2019.4+的版本,那就选择上面的2019.4-branch-updates分支克隆,git命令如下:

git clone --recursive -b 2019.4-branch-updates https://github.com/Unity-Technologies/mono.git

国内需要镜像clone才会比较快,所以镜像使用相关文章:

git clone 换源 / GitHub 国内镜像_面里多加汤的博客-CSDN博客_github国内镜像源

本人使用https://gitclone.com git命令更改为:

git clone --recursive -b 2019.4-branch-updates https://gitclone.com/Unity-Technologies/mono.git

克隆完成后,打开①安装的Cygwin命令窗体程序,cd到②克隆到本地的mono工程目录下,执行

cd d:/xxx/mono/

区分64和32位window系统执行命令:

64位

./autogen.sh --prefix=$PREFIX --host=x86_64-w64-mingw32 --enable-msvc --disable-boehm

32位

./autogen.sh --prefix=$PREFIX --host=i686-w64-mingw32 --enable-msvc --disable-boehm

等待编译完成,它会将mono工程进行编译并输出到Cygwin.bat文件所在目录下的\home\计算机名\mono文件夹下【Cygwin.bat是Cygwin命令窗体程序执行bat文件】

Cygwin目录:Cygwin.bat所在目录
mono目录:Cygwin目录\home\计算机名\mono\

③ 使用Visual Studio 2019打开mono目录下的\msvc\mono.sln生成解密文件

实在找不到就搜索文件mono.sln

生成过程中或许有些报红,但感觉没影响完成后去拿到我们需要的文件:

如果失败了会看不到下面的文件,只有mono-2.0-dac-bdwgc.dll,我们要是的mono-2.0-bdwgc.dll

mono目录下\msvc\build\bdwgc\x64\bin\Release\mono-2.0-bdwgc.dll

将它替换掉MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll

加密dll代码:

string path = @"E:\xxx_Data\Managed\Assembly-CSharp.dll";
byte[] bytes = File.ReadAllBytes(path);
bytes[0] += 1;//如果你想验证一下是否加密成功,可使用dnSpy神器
//string outPath = @"E:\xxx_Data\Managed\Assembly-CSharp_dec.dll";
string outPath = path;
File.WriteAllBytes(outPath, bytes);

加密后的dll只是暂时无法被破解,因为解密方法就在mono-2.0-bdwgc.dll,别人只要破解这个dll就知道解密方法,然后解密你已经加密的dll。

Unity3D研究院之Android二次加密.so二次加密DLL(八十二) | 雨松MOMO程序研究院

雨松篇均是安卓dll加密和解密,安卓解密文件是libmono.so,iOS尚未接触。

2. Android工程(2022年9月9日更新已完成)

【Unity】安卓加密编译libmono.so成功&失败记录(unity2017已成功编译)_两水先木示的博客-CSDN博客

① 、② 与Window工程相同
③  使用Cygwin命令窗体程序执行

cd d:/xxx/mono/
./external/buildscripts/build_runtime_android.sh

完成后搜出libmono.so,将它放入.apk文件里的\lib\armeabi-v7a\下(如果lib还有其他的armxxx目录也要对应放入arnxxx\libmono.so文件,libmono.so也是会有对应lib一样的armxxx目录的,不要选错文件放入。

我测试现状安卓工程还未尝试过编译通过,window工程使用下方文章提供的mono工程测试可行,但安卓测试去编译build_runtime_android.sh失败Unity 代码加密 Mono 编译与加密 windows版_雾凇|Songs的博客-CSDN博客_unity代码加密

失败记录:

最关键的一点是git clone下的mono工程是必须完整的,不要去zip下载git工程,我就是嫌git clone命令行下载太慢,直接翻墙下载zip,结果搞了很久还是各种报错缺失文件,检查发现直接去下载zip,文件缺失了很多,比如:mono-unity-2021.2-mbe-pre-upgrade\external\bdwgc文件夹是空的!后续更新能够正常编译的情况。

编译Unity使用的libmono.so - K1_大大 - 博客园

最大问题在于所有文章都没有介绍2017之后的libmono.so的制作,基本上都有build_runtime_android.sh和 build_runtime_android_x86.sh 而且里面的内容还挺多,改的东西也很多,反正这x86.sh 只在2017之前的版本看到过,而且内容也相对一致,由于github克隆一致存在网络问题,而且没有找到相关的库提供,暂时性放弃,基本上可以看上面的K1_大大文章实现编译libmono.so解密文件。哎,github的链接引用库真的是醉了,还有国内的墙,不稳定的镜像,这一切都阻止着我继续下去,但不用担心,Unity自从出了IL2CPP,C#层加密应该是稳妥的。

二、热更代码&资源加密

没啥好说的,就是简单的二进制文件加密,基本上都是assetbundle包加密吧,加密后解密正常加载ab包即可,哎,反正就是做个样子,毕竟解密都在客户端。

三、混淆代码

暂未研究

【Unity3D】初学加密技巧(反破解)相关推荐

  1. Android开发笔记(七十三)代码混淆与反破解

    代码混淆 ProGuard是ADT自带的apk混淆器,它的用途有: 1.压缩apk包的大小,能删除无用的代码,并简化部分类名和方法名. 2.加大破解源码的难度,因为部分类名和方法名被重命名,使得程序逻 ...

  2. 优秀的加密方案-软件加密技巧

    概要 ◎设计优秀的加密方案 ◎简单而有效的加密技巧 ◎进一步提高加密强度 ◎通过"软硬兼施",降低加密成本 ◎通过软件授权,实现多种销售模式 我们需要防御什么 驱动程序替换 这种攻 ...

  3. Unity3D项目加密-精锐5加密锁解决方案

    Unity3D项目加密 Unity3D项目研发完成,发布前开发者需要对代码及资源进行加密,防止代码被反编译,防止资源被盗窃,造成不必要的损失.如果不做加密,可能很快就会出现一堆破解版游戏. Unity ...

  4. 加密狗原理-高强度加密-程序加密技巧

    加密狗原理,加密狗加密的基本原理 本文将介绍软件加密加密狗原理,加密狗加密的基本原理的一些编程技巧,以及软件开发者将如何编写安全可靠 的代码,如何对付各种各样的加密狗破解,编写加密程序时应该尽量避免的 ...

  5. 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径

    文章转载自:USB-Key逆向研究中心https://www.ukeycopy.com/h-col-127.html 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解 一.复 ...

  6. 谈Flash的破解与加密(附flash破解工具)

    下载地址:http://dotnet.5d6d.com/thread-470-1-1.html 包括:SSD4,换衣.zip,flash.zip 在一些名门论坛,谈论破解之术被明文禁止甚至会招来不尽的 ...

  7. #你好Unity3D#避免代码被反编译(来自我的长微博)

    #你好Unity3D#避免代码被反编译(来自我的长微博) 雨松MOMO[你好Unity3D]围观25070次77条评论编辑日期:2014-07-09字体:大 中 小 id="cproIfra ...

  8. 【贪玩巴斯】Unity3D初学圣经(三)—— unity中的基础概念——scene场景,component组件,assets文件夹和Material材质,Mesh Renderer与shader

    [贪玩巴斯]Unity3D初学圣经 三-- unity中的基础概念--scene场景,component组件与assets文件夹和Material材质以及Mesh Renderer 和 shader ...

  9. USB软件狗的设计及反破解技术

    1 软件狗技术 近年来,软件狗技术在保护软件开发者利益.防止软件盗版方面起了很大作用.软件狗技术属于硬加密技术,它具有加密强度大.可靠性高等特点,已广泛应用于计算机软件保护.软件狗技术的发展经历了多次 ...

  10. 【JS 逆向百例】网洛者反爬练习平台第一题:JS 混淆加密,反 Hook 操作

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 写在前面 逆向目标 绕过无限 debugger Hook 参数 逆向参数 PyCharm 本地联调 完整代码 J ...

最新文章

  1. 《深度学习500问》,川大优秀毕业生的诚意之作
  2. 2018python好找工作吗-2018年为什么要学习Python?Python还有前景吗?
  3. SizeOf与Structure与Managed Code
  4. REST API解析
  5. 代码也浪漫:用Python放一场烟花秀!
  6. Caching和Purgeable Memory (译)
  7. 工业级光纤收发器和协议转换器有什么区别呢?
  8. 美团多渠道打包原理以及使用
  9. 绘制微信字体大小调节器
  10. iOS13 Scene Delegate详解
  11. 微信小程序----开发小技巧(二)
  12. Tsukuru Tazaki and his Years of Pilgrimage
  13. Android接入极光消息推送
  14. SQL SERVER 修改数据库名称(包括 db.mdf 名称的修改)
  15. LINUX------给系统加磁盘
  16. 在微信中分享页面之调用微信sdk接口
  17. 最常见的Git错误都有哪些,如何解决它们?
  18. [Appium] 搭建Android App UI自动化环境
  19. 车载以太网一致性测试套件INTEWORK-TAE AETP
  20. 韩电商遭“暴击”,软银减持10亿美元-成都扬帆志远跨境电商

热门文章

  1. 使用vld查看OPCode
  2. Windows 无法访问指定设备、路径或文件
  3. LM2596电源降压调整器(150KHz,3A)020
  4. 基于STM32读取W25Q64(模拟SPI)
  5. C语言:从入门到进阶笔记(完整版)
  6. 加权移动平均线(Weigted Moving Average,WMA)
  7. OS篇-Bochs在Ubuntu下的安装教程
  8. Mac上青花瓷抓包安装
  9. linux命令mysql启动,linux下启动mysql的命令
  10. 关于将网易有道词典单词本导出到必应词典生词本的尝试