码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Unity3D】初学加密技巧(反破解)


    参考文章:

    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工程 

    二、热更代码&资源加密

    三、混淆代码


    一、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代码:

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

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

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

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

    2. Android工程 

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

    1. cd d:/xxx/mono/
    2. ./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包即可,哎,反正就是做个样子,毕竟解密都在客户端。

    三、混淆代码

    暂未研究

  • 相关阅读:
    工程师新红利,我国预计到2025年培养20万名这类人才
    【Linux操作系统】——Linux概述
    java动态合并表格
    C语言实例_5
    AI人机对话-无能版
    python-(6-3-2)爬虫---requests入门(基于post请求)
    我要涨知识 —— TypeScript 常见面试题(一)
    Redis-基本介绍/linux下环境配置/配置文件
    Java中PDF文件传输有哪些方法?
    mysql 连接不上,start the server错误,服务启动停止,怎么都连不上。
  • 原文地址:https://blog.csdn.net/qq_39574690/article/details/126093047
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号