759611050 发表于 2021-10-17 22:13

B站新游【爆裂X女】逆向探讨

写在前面:
1.本人没有任何安卓反汇编基础,之前多次尝试cocos2d手游逆向均因为加密过强卡在秘钥无法获取且没有手机动态调试而失败告终。
2.本贴的手游由于是U3D类型,且global-metadata.dat没有加密才到接近最后一步,由于不知道ida里如何修改参数而卡着,希望大神能给予指点。
3.论坛禁止发布成品,如有突破大家也可以试着做做。
参考教程:
U3D游戏《东方新世界》Il2Cpp破解详细教程
准备工具:
1.il2cpp反编译工具il2cppdumper
2.010Editor
3.IDA Pro 7.0 绿色版
4.带语言高亮的记事本比如 Notepad++
5.一款支持打开APK的解压工具就行
6.一款U3Dil2cpp打包的游戏
一、游戏类型判断

懒得改后缀名就直接拖进AndroidKiller里面直接看类型了,当然你可以改成rar打开apk看,看到是u3d就开始尝试了。因为之前的cocos2d手游加密有阴影了。
二、判断为U3Dil2cpp打包的游戏

发现lib\armeabi-v7a\libil2cpp.so,可以判断为U3Dil2cpp打包的游戏
三、il2cppdumper的使用
将il2cpp.so连同assets\bin\Data\Managed\Metadata 目录下的global-metadata.dat 文件一起放进il2cppDumper目录。
运行il2cppDumper.exe,第一步,选择il2cpp.so
第二步,选择global-metadata.dat
进入到il2cppDumper控制台界面,注意!教程贴里面选择的模式3,但游戏必须用模式4才能dump成功,因此要按4!
然后就会得到Dump.cs,包含关键函数的偏移信息
四、关键函数寻找
用Notepad++(我自己用的subline,就是一个高级记事本,无须在意)打开,搜索attack,找到了需要的东西(这游戏还是用的比较套路的函数命名法)
        // Methods
        public void .ctor(); // 0xE15AB8
        public bool TryDo(); // 0xE15B3C
        public void RecoverInitial(Simulation s); // 0xE15E98
        private void DoDot(Simulation s, int entityId); // 0xE15C10
        private void AddCount(Simulation s); // 0xE1653C
        private float CalDamage(int entityId); // 0xE15F18
        private float GetHeroAttack(); // 0xE16654
        private float GetTargetMaxHP(); // 0xE167F4
        private void DamageAttachEffect(Simulation s, int entityId); // 0xE16354
        public override IComponent Reset(); // 0xE17478
        public RenderBuff get_RenderBuff(); // 0xE1756C
        public static void Attach(Simulation s, int sourceEntityID, int entityId, WitchSkillEffectAddDot dotConfig); // 0xE16994
        public override void OnDestory(); // 0xE1761C
        private static void .cctor(); // 0xE17738
        private static Components <ID>m__0(); // 0xE1782C
        public IComponent <>iFixBaseProxy_Reset(); // 0xE17894
        public void <>iFixBaseProxy_OnDestory(); // 0xE1789C
}
其中的GetHeroAttack()应该就是我们要找的了。
五、用IDA进行修改
private float GetHeroAttack(); // 0xE16654
将il2cpp.so拖入ida,分析完毕,按G,输入 0xE16654,进入关键函数

按F5查看伪代码

IDA里面伪代码窗口右键 按 Copy to assembly 就会把伪代码和ARM对应起来
到这步就卡住了,因为教程贴里面汇编函数比较短,能给R0直接赋值,但是这个游戏函数涉及到判断,两个result里面选择一个结果,但我实在不知道在哪里赋值或者NOP,希望有大神能指点一下。
改完之后就差在010editer中修改并保存和签名了

小卡爱熟妇 发表于 2021-10-18 12:09

感谢分享,向大佬学习

嫒小鹿 发表于 2021-10-18 16:30

        用心讨论,共获提升!

xhd7908491 发表于 2021-10-18 17:31

看不懂了啊

stellaW 发表于 2021-10-18 18:09

感谢分享!!!像楼主学习~~

UnrealFPS 发表于 2021-10-19 00:09

本帖最后由 UnrealFPS 于 2021-10-19 00:15 编辑

我是小白   我用别人现有的工具解包的
先用GDSTUDIO把安装包内容标准化然后就能用asset解包了
我解包了几次不是少材质贴图就是少模型最理想的情况是少了4个人物

不好意思看错了以为是拆包取模的问题

芽衣 发表于 2021-10-19 17:32

你确定是GetHeroAttack()吗??我怎么感觉不太对……


如果这里确实是攻击力数值的话改压栈就可以了
页: [1]
查看完整版本: B站新游【爆裂X女】逆向探讨