|
|
发表于 2025-12-18 22:02:17
|
查看: 140 |
回复: 0
此教程适用于 Halfbrick 工作室制作的所有游戏(如《水果忍者》、《疯狂喷气机》)。
定位函数
使用 IDA Pro 或其他逆向工具,加载游戏主程序,直接搜索以下函数:
函数名:
Mortar::DefaultVersionService::GetVersionUpdate(void)
符号名:
__ZNK6Mortar21DefaultVersionService16GetVersionUpdateEv
函数逻辑
该函数原始逻辑如下,它会调用 ServiceManager 获取版本实例并加载偏移:
PUSH {R7, LR}
MOV R7, SP
BL GetInstance ;
LDR R0, [R0,#0x34]
LDR.W R0, [R0,#0x164]
POP {R7, PC}
汇编修改
我们直接在函数入口处进行截断,让其返回空值(0),不再执行后续的版本比对逻辑
将
PUSH {R7, LR}
MOV R7, SP
替换为
MOVS R0, #0
BX LR
整体也就变成了
MOVS R0, #0 将返回值 R0 置为 0
BX LR 立即返回调用者
BL GetInstance ;
LDR R0, [R0,#0x34]
LDR.W R0, [R0,#0x164]
POP {R7, PC}
修改后 IDA Pro 的图形视图会变成两段:
idapro
最后保存导出,替换掉游戏原始的二进制文件,即可实现去除强制更新
|
|