IDA修改某游戏so文件子程序求助

爱必应

最近在玩某款单机安卓游戏
发现某些功能带广告,最新版本的没有去广告
但是旧版本出来时间很久了。网上很多去广告版
于是就想先找一个旧版去广告的来研究,然后找到关键函数照葫芦画瓢来去广告

操作过程大致参考了此贴
https://www.52pojie.cn/thread-818645-1-1.html

以下是旧版去广告版so的关键位置
il2cpp:00BC601C
il2cpp:00BC601C ; =============== S U B R O U T I N E =======================================
il2cpp:00BC601C
il2cpp:00BC601C
il2cpp:00BC601C sub_BC601C                              ; CODE XREF: sub_4CAF6C+1C4p
il2cpp:00BC601C                                         ; sub_4D2EE4+1E4p …
il2cpp:00BC601C                 MOV             R0, R1
il2cpp:00BC6020                 MOV             R1, #1
il2cpp:00BC6024                 MOV             R2, #0
il2cpp:00BC6028                 B               sub_1083C74
il2cpp:00BC6028 ; End of function sub_BC601C
il2cpp:00BC6028

按下F5显示伪代码如下

int __fastcall sub_BC601C(int a1, int a2)
{
  return sub_1083C74(a2, 1, 0);
}

对应十六进制代码

01 00 A0 E1 01 10 A0 E3 00 20 A0 E3 11 F7 12 EA

也就是说去广告版通过修改原so文件去广告的原理:
通过修改sub_BC601C方法,绕过原有的很长的一段代码(117行伪代码),直接调用返回sub_1083C74方法(4行伪代码)。

原理虽然知道了,但是如何操作却不会,因为不同版本11 F7 12 EA这个是变化的
B sub_1083C74 应该对应的是11 F7 12 EA 这是怎么算来的
或者说怎么编辑原版117行伪代码so的sub_BC601C来生成去广告的4行代码
比如说现在找到相对较新版本要修改的是0xBC601C,想返回0x1062E0C,怎么算出1062E0C对应的4个操作码

为了便于分析这里附上传蓝奏云旧版原版有广告so文件,看有没有高手有空指点一下,谢谢!
https://www.lanzous.com/ia7g2ni

声明:本站所有资源均由网友分享,如有侵权内容,请在文章下方留言,本站会立即处理。

原文链接:,转发请注明来源!

发表评论