老设备之家

找回密码
立即注册
搜索
热搜: iOSIPA 美化
发新帖

352

积分

0

好友

6

主题
发表于 2025-12-18 22:02:17 | 查看: 136| 回复: 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

idapro


最后保存导出,替换掉游戏原始的二进制文件,即可实现去除强制更新




您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|老设备之家

GMT+8, 2026-1-12 12:24 , Processed in 0.085814 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表