iOS逆向-App修改
2020-01-18
//pacman真好玩
给panman256加上一个无敌
首先当然是"砸壳"
看到是unity做的, 用Il2CppDumper 从Unity il2cpp文件还原DLl, 生成的ida脚本可以恢复很多函数名, dump.cs保存用到的类
然后拿到binary, 用ida加载, 跑Il2CppDumper生成的脚本, 恢复一下函数名(这两步可能需要很长时间, 这期间可以找找dump.cs里可能有用的方法)
找到一个player类, 里面有个 KillCharacter
和 KillCharacterNow
, 猜测和玩家死亡有关
lldb远程调试, image list -b pacman256
找到基地址, 通过dump.cs结合ida找到函数位置下断点调试//arm64的寄存器比较特殊, 主要关注PC(下一条执行的指令)和LR(子程序结束后执行的指令(相当于返回地址))
回溯找到偏移为0x7CEA4的OnTriggerEnter函数(BadGuy类)//一看就知道是碰到👻触发的判断////当然不能直接把这个函数给干掉, 因为游戏中还有各种杀死👻的机制
这个函数偏移0x6e8处有个 B.NE
的关键跳转, 每当玩家碰到ghost就会触发判断, 若跳转则玩家不死亡, 不跳转则玩家死亡
改成 0010007D58C 06 00 00 14 B loc_10007D5A4
无条件跳转
保存, 复制出来重签名
安装到iPhone上玩玩
成功!
//这里我用的是越狱的iPhone5S iOS12.3(16F156) 从App Store下载, 最后安装在未越狱的iPhone7 iOS13.3(17C54)上, 完美运行!