本帖最后由 梧桐树下丶 于 2019-7-31 09:56 编辑
//可能会封号,因为我只是用小号测试了几下就替换回来了,请谨慎使用
你群这游戏又又火了,所以就来解包来看一下
1.解压apk
典型的unity il2cpp打包的游戏,发现global-metadata.dat被隐藏
推测应该是将其隐藏在libil2cpp.so里面
2.取出global-metadata.dat
将so拖入IDA
然后搜索MetadataLoader::LoadMetadataFile函数
点击函数并f5
箭头所指的为sonet_global_metadata_dat_len为dat的长度
点击 并记录偏移
方框里为dat的解密 很简单 按位取反
写一个简单的函数 去读取libil2cpp.so里global-metadata.dat文件的magic header"AF1BB1FA";
因为他已经取反,所以需要搜索“50E44E05”
[C#] 纯文本查看 复制代码 List<uint> head = new List<uint>()
{
0X50,
0xe4,
0x4e,
0x05,
};
string path = @"C:\Users\mikot\Desktop\newAzur\libil2cpp.so";
byte[] array = File.ReadAllBytes(path);
int index = 0;
int end = 0x10EBAE4;
for (int i = 0; i < array.Length; i++)
{
bool flag = false;
for (int j = 0; j < head.Count; j++)
{
if (array[i + j] != head[j])
{
flag = true;
break;
}
}
if (!flag)
{
index = i;
break;
}
}
byte[] array1 = new byte[end];
for (int i = 0; i < end; i++)
{
array1[i] = (byte)~array[index + i];
}
File.WriteAllBytes(Path.GetDirectoryName(path) + "/global-metadata.dat", array1);
之后便会得到global-metadata.dat
3解析
用Il2CppDumper进行解析
使用Ida 运行生成的script.py 快捷键alt f7去还原method name
使用dnSpy打开还原出来的dll
然后就是常规操作
在里面搜索一些关键字
attack hp等等
之后首先发现了一个有点像的类
在其构造函数中应该是各种属性设置
在其类中发现了一个熟悉的东西
一个可以用来保护内存变量和检测等等的插件
一般可以在一定程度上去防止八门等等的修改
http://codestage.ru/unity/anti-cheat/api/index.html
这是其文档地址,至于代码因其收费的所以就不放整体代码了
之前有曾购买使用过所以很熟悉这个
以类型ObscuredDouble为例
当你定义一个 ObscuredDouble value = 2d; 时会经过此方法去进行保护
[C#] 纯文本查看 复制代码 private static ACTkByte8 InternalEncrypt(double value, long key)
{
long currentKey = key;
if (currentKey == 0L)
{
currentKey = cryptoKey;
}
var u = new DoubleLongBytesUnion();
u.d = value;
u.l = u.l ^ currentKey;
return u.b8;
}
当你拿value进行运算时 他就会此方法去返回真正的值
[C#] 纯文本查看 复制代码 private double InternalDecrypt()
{
if (!inited)
{
currentCryptoKey = cryptoKey;
hiddenValue = InternalEncrypt(0);
fakeValue = 0;
inited = true;
}
var union = new DoubleLongBytesUnion();
union.b8 = hiddenValue;
union.l = union.l ^ currentCryptoKey;
double decrypted = union.d;
if (Detectors.ObscuredCheatingDetector.IsRunning && fakeValue != 0 && Math.Abs(decrypted - fakeValue) > 0.000001d)
{
Detectors.ObscuredCheatingDetector.Instance.OnCheatingDetected();
}
return decrypted;
}
很久没用过它了 如果说错了请指正
通常在arm里get时会伴随着bl
4 搜索修改
为了省事我直接在ida里直接搜索上述类里的任意变量 比如 "MasterEnemyParameter.EnemyParameter$$get_hp"
可以搜到很多有用的function 为了方便 我只找了靠前的几个进行了修改
根据名字推测应该是敌人的属性 所以将hp atk 等等可以设置低数值
类似的变量可以一直往下搜索知道function 结束
但是这两个应该是够的
将他们一个改为1一个改为0
跳转到hex窗口
使用010editor打开so,按ctrl g跳转到上述两个地址 然后修改为对应的指令
保存将其放回apk替换,检验成功
至此解包成功
我没有测试打上签名版....因为他要下载的东西是真的有点多...
而且他没有打入x86设备,应该是因il2cpp模式下包体会超过平台上架限制,所以大部分模拟器玩他会有一些问题
成品地址 :链接:https://share.weiyun.com/5wNSkRF 密码:dykyx6
建议 获取apk里各个关键文件的md5或者签名 不对就封号 还记录设备号 简单粗暴
来点评分吧 秋梨膏
有没有大佬有越狱手机 帮我把这个应用砸个壳 我想在手机上玩 |