unity+android APK 加固

本文介绍多种加密方式,包括xlua签名和加密、AB包资源加密、so文件加密、dex加密及Java混淆等,提供具体实现方法和技术细节。

大部分的加密方式选择异或加密比较简单

1:xlua 签名和加密 

思路:签名xlua下载提供了签名的工具。加密代码和解密代码使用AB bundle 方式

签名流程:

 xlua 工具目录: \xLua-master\xLua-master\Tools

 生成私钥公钥和签名工具放在需要签名的xlua 代码文件同级目录。

文本编辑bat执行下面语句
cd /d %~dp0
@REM  签名后的文件拷贝到LuaSing
rmdir /q /s  LuaSign   

"FilesSignature.exe" "Lua" "LuaSign"

执行后在读取lua代码的地方前添加下述代码:

lua的签名加载方式:
PUBLIC_KEY 从生成的公钥key_ras.pub 双击查看
SignatureLoader sl = new SignatureLoader(PUBLIC_KEY, LoadLuaFile);
LuaEnv.AddLoader(sl);

签名的结果是会在签名的代码开始前加一段文本

Lua 代码的加密方式是外部读取文本流加密,解密是读取lua得到字节流解密

加密部分代码:

string key = "yhjm";
byte[] key_char = System.Text.Encoding.Unicode.GetBytes(key);
 File.Copy(f, newpath, true);
 byte[] bytes = File.ReadAllBytes(newpath);
for (i = 0; i < bytes.Length; i++)
 {
 bytes[i] = (byte)(bytes[i] ^ key_char[i % key_char.Length]);
 }
File.WriteAllBytes(newpath, bytes);

File.Copy(f, newhxpath, true);
File.WriteAllBytes(newhxpath, bytes);

lua部分解密和签名验证代码:

LuaEnv.AddLoader(new SignatureLoader(aabb, (ref string filePath) =>
  {
 string orgPath = filePath;
   byte[] tmpBytes = LuaHelper.Inst.ReadFile(ref filePath);
                   
byt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值