IL2CPP框架某手游逆向分析

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

  1. 解开apk,可以看出该手游是IL2CPP框架的游戏,那么在apk中肯定还有一个global-metadata.dat文件(除非加密)。
    2.
  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)  
  1. 用IDA打开libil2cpp.so,要花费不少时间,挺大的程序,IDA解析完成后,里面的函数名都是不太友好的,伪C代码也很难看明白,所以下一步就是把符号表(函数名)恢复。
    在这里插入图片描述
  2. 使用Il2CppDumper下生成了一个dump.cs文件,该文件里面有很多符号表和地址,大概思路是将符号表和对应的地址,通过IDA自己编写的插件进行恢复(做IOT漏洞挖掘时的思路)。由于同名很多,所以最好将类名加上,主要防止重名。
    1. 用python将GetHashCode和RVA 一一对应导出。
    2. IDA恢复符号表(本人使用的是IDA7.0,IDA7.5貌似不能正常使用以下恢复函数)。
# 主要恢复函数
idc.MakeName(func_addr, func_name)
idc.MakeCode(func_addr)
idc.MakeFunction(func_addr)

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值