文章来源:https://mp.weixin.qq.com/s/4_t4LkOdLDhED-_j6ZPK3w
作者:灯等灯等灯
遇到一个游戏,使用Il2CppDumper
Dump失败,打开global-metadata.dat看看,
加密,使用 https://github.com/350030173/global-metadata_dump 脚本去dump
dump之后,再使用Il2CppDumper,还是不行,提示要手动输入
so可能还有问题,再去dump so试试,使用yang神的脚本
https://github.com/lasting-yang/frida_dump
卡着不动,但是发现so的大小有128MB,而原来的只有7十多
无法dump,那使用yang神旧版的脚本试试
https://github.com/lasting-yang/frida_dump/commit/567b8d38b086fc916d383113acf8985c34c7bd7f
Dump成功,提取出来,再使用F8LEFT大佬的修复so修复一下
https://github.com/F8LEFT/SoFixer/releases
还是报错,但是看到一个信息,“[VerifyElfHeader:145]"libil2cpp.so_0x70014ce000_0x80ef000.so" has bad ELF magic”
错误的魔数?,010打开看看
确实头部信息被抹掉了,
找个同位数的把头部字节填回去,再使用F8LEFT大佬的工具
好,修复成功
再使用Il2CppDumper试试,
还是报错,用ida打开看看,提示这个
难道
没有被正确修复吗?
导出函数干干净净,肯定还是哪里没修复,再使用010打开解析一下elf文件,好像缺少了什么
正常这里都会有4个结构体
struct elf_header
Elf64_Half e_ehsize_ELF_HEADER_SIZE
Elf64_Half e_phentsize_PROGRAM_HEADER_ENTRY_SIZE_IN_FILE
Elf64_Half e_shentsize_SECTION_HEADER_ENTRY_SIZE
这3个大小信息都没了,通常这里也是固定的,找个正确的对比后改一下
正确解析elf结构体,再使用Il2CppDumper试试,还是不行
Ida再打开看看,
正常打开,导出函数也有
使用frida-il2cpp-bridge去获取dump.cs,
提示找不到导出函数,去ida中搜索看看,确实没有,这个也被抹除了,其他的貌似都有在,找个别的游戏,打开同位数的游戏的so,是能找到这个导出函数的,搜索一下这个函数,确实是有的
找找附近的特征,去搜索一下
有很多个,最后找到这个,在fix.so中跳转过去看下
好家伙原来导出函数变成这样
il2cpp_dk1::num_htpjhsSvk
把上面的函数填写到frida-il2cpp-bridge,再写脚本,最后终于获取到相关信息
总结:
1.global-metadata.dat加密:
使用:https://github.com/350030173/global-metadata_dump
2.so加密:
使用:https://github.com/lasting-yang/frida_dump
或:https://github.com/lasting-yang/frida_dump/commit/567b8d38b086fc916d383113acf8985c34c7bd7f
3.so修复:
使用:https://github.com/F8LEFT/SoFixer/releases
如果还不行,手动修复
4.根据特征找到原函数地址
5.建了一个QQ群:542863693,欢迎加入(备注看的什么文章)
微信公众号:MoneyHoneyCome
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课