unity app加密---Andorid

一、功能

    1)、基础版:加密unity下build的assembly-csharp.dll文件,避免或者减缓app源码被破解;

    2)、加强版: 对mono源码中的解密算法所处的程序段进行加密,加强破解难度。

 

二、流程

    1)、对导出的Assembly-CSharp.dll加密;

    2)、从github下载unity的mono源码;

    3)、修改mono源码中的文件image.c,找到函数mono_image_open_from_data_with_name,其中参数data代表了assembly-csharp.dll的内存地址,在进行data的空判断之后,加入解密算法,如:

        if (strstr(name, “Assembly-CSharp.dll”) != NULL)

        {

            解密算法

            ......

        }

    4)、重新编译mono,得到libmono.so文件;

    5)、将1)和4)得到的文件覆盖到1)中的导出包中;

    6)、打包生成最后的apk文件。

 

    以上是基础版的流程,加强版的流程如下:

    1)、2)、3)同基础版1)、2)、3);

    4)、encrypt libmono.so,对libmono.so里面的密钥获取函数进行section加密;

    5)、修改image.c,增加密钥获取函数getKey,增加该函数的section属性;

    6)、在进入main函数之前,解密步骤4)所述section;

    7)、在image.c的解密算法中getKey,并使用该key来解密dll;

    剩余步骤与基础版4)、5)、6)一致。

    具体参考:http://www.xuanyusong.com/archives/3571    (雨松沫沫博客)

 

三、备注

    1)、对mono源码的操作都是在Linux环境下进行;

    2)、加密算法的时间复杂度不要太高,否则会影响app的加载速度;

    3)、加密之后需要使用.net破解工具和C破解工具测试是否能够反编译得到assembly-csharp.dll及libmono.so(IDA PRO)的源码;

    4)、最好将加密和解密做成自动化;

    5)、如果Unity支持IL2CPP,那么不需要人工进行加密处理了。

转载于:https://www.cnblogs.com/letsgollc/p/6690065.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值