首页
社区
课程
招聘
[原创]IL2CPP框架某手游逆向分析
发表于: 2022-4-9 14:10 11529

[原创]IL2CPP框架某手游逆向分析

2022-4-9 14:10
11529

本文内容仅供学习。
可以百度下载阿拉德之怒手游app。
图片描述

  1. 解开APK包,可以看出该手游是IL2CPP框架的游戏,那么在apk中肯定还有一个global-metadata.dat文件(除非加密)。
    图片描述
  2. 将global-metadata.dat和libil2cpp.so文件拷贝到同一个文件夹下。
  3. 使用Il2CppDumper将global-metadata.dat和libil2cpp.so进行解析,下载网站:https://github.com/Perfare/Il2CppDumper/
  4. 解析完成。
    图片描述
  5. 生成几个文件,现在分析DummyDll文件夹下的文件
    图片描述
    图片描述
  6. 将Assembly-CSharp.dll脱到dnSpy(可以百度下载)中后就可以正常分析了,修改GetHP函数猜测可能可以实现无敌。
    图片描述
  7. 一些常用游戏关键词。

游戏搜索方发名:
onResult,onchinabilling,resulton,Paycenter,Callback
联通游戏搜索方发名:
OnPayResult,PyaResulton,Activity,result,callback
电信爱游戏搜索方发名:
paySuccess成功,payCancel取消,payFailed失败
移动mm搜索方发名:
onBillingFinish,Billing,CallBack
支付宝和银行卡方法名:handlemessage
支付宝搜索字符串9000 360
支付
onfinishedon,Activityresult
发送短信限:android.permission.SEND_SMS
发送短信锁定支付式关建字符串:CHINA_TELECOM
中国电信46003,46005,46011
CHINA_MOBILE
中国移动
46020,46000,46002,46007
CHINA_UNICOM
中国联通46001,46006,NOT_DEFINE未定义
英雄、玩家(Hero、player)
怪物、敌人( monster、Enemies、enemy)
初始化(init)
力量( power、str、strength)
智力( int、Intelligence)
运气(luk、luck)
敏捷(AGI、agile)
魔法 ( magic、mag)
金币(gold、coin)
钱,钞票 (Money)
现金(cash)
钻石、宝石 (Gem、diamond)
血量( health、life、HP、Max hp、blood )
蓝(mp、sp、Power)
攻击(attack(atk)、fight、hit、damage)
防御 (defence、def、defense)
护甲 ( Armor)
物理( physic、phy)
暴击(Crit、cri、crt)
闪避 (Dodge)
范围( range)
速度、频率(speed)
改路(Rate)
恢复( Recover)
取(get)
置(set)
支付 (bill、billing、pay、purchase)
成功 (success)
失败 (fail)
取消(cancel)
分数 (Score)
死亡(Dead)
伤害(hurt)
体质(vital、vit、stamina)
技能伤害 (skilldamage)
换弹速度(initalize)

 

8.用IDA打开libil2cpp.so,要花费不少时间,挺大的程序,IDA解析完成后,里面的函数名都是不太友好的,伪C代码也很难看明白,所以下一步就是把符号表(函数名)恢复。
图片描述
9.使用Il2CppDumper下生成了一个dump.cs文件,该文件里面有很多符号表和地址,大概思路是将符号表和对应的地址,通过IDA自己编写的插件进行恢复(做IOT漏洞挖掘时的思路)。由于同名很多,所以最好将类名加上,主要防止重名。

1
2
1. 用python将GetHashCode和RVA 一一对应导出。
2. IDA恢复符号表(本人使用的是IDA7.0,IDA7.5貌似不能正常使用以下恢复函数)。
1
2
3
4
# 主要恢复函数
idc.MakeName(func_addr, func_name)
idc.MakeCode(func_addr)
idc.MakeFunction(func_addr)

图片描述
10.恢复完成后,看起来就舒服多了(有的函数没有正常恢复,应该是dump.cs文件中没有对应的符号表,不过问题不大,主要的函数已经恢复正常)。
图片描述
11.开始使用frida进行hook对应的函数地址。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
支持
2022-4-9 16:31
0
雪    币: 29
活跃值: (5857)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
虽然但是,你都用IL2cppDumper了,为什么不直接用它生成的ida脚本还原符号表
2022-4-9 18:37
0
雪    币: 7346
活跃值: (3427)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不吃早饭 虽然但是,你都用IL2cppDumper了,为什么不直接用它生成的ida脚本还原符号表
可能是不会用233
2022-4-9 18:45
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
不吃早饭 虽然但是,你都用IL2cppDumper了,为什么不直接用它生成的ida脚本还原符号表
仅供学习,思路多方面,还是上面说的,有的IDA版本不一定支持。
2022-4-9 23:20
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
breaklink 可能是不会用233
是的,不会用。
2022-4-9 23:21
0
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
ida不支持.py脚本是为啥
2022-4-10 11:23
0
雪    币: 0
活跃值: (218)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不明觉厉
2022-4-10 18:44
0
雪    币: 0
活跃值: (325)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
ida.py脚本我也遇到了好多问题,不过总算是搞明白了
2022-4-12 12:27
0
雪    币: 0
活跃值: (325)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
首先先查看生成的目录下是否有scripy.py文件,老版本是有的,直接ida在file/scripy file选择py直接运行就行.
没有的说明是新版本,这个时候需要用你il2dcpp目录下的ida.py更据你的python环境变量选择ida.py或者ida3.py.新版脚本在ida选项file/scripy file中运行后会打开一个窗口选择文件,你再选择dump下来的scripy.json就行了,等跑完就行
2022-4-12 12:31
0
游客
登录 | 注册 方可回帖
返回
//