去除某APP强制更新

去除某APP强制更新

某APP打开后弹出强按钮

解决办法:

1.反编译APP,修改App版本号

2.拦截getVersion请求,修改版本号

3.patch APP,跳过更新

1.2就不讲了,这里主要分析下第3种方式。

首先发编译APP后发现lib里面有libapp.so和libflutter.so,可以猜测更新等函数在libapp.so实现。

打开ida,函数

都是经过混淆后的。

使用blutter 操作后得到:

查找update,version等函数(省略寻找过程)...

frida hook checkVersion直接返回:

'use strict';

const TARGET_LIB = "libapp.so";

const patchOffsets = [

0x838D40, // checkVersion addr

];

function waitForModule(name, callback) {//检测so加载成功才hook

const check = () => {

const lib = Process.findModuleByName(name);

if (lib) {

clearInterval(timer);

callback(lib);

}

};

const timer = setInterval(check, 100);

check();

}

function patchRetAtOffset(base, offset) {

const addr = base.add(offset);

Memory.protect(addr, 4, 'rwx');

addr.writeU32(0xD65F03C0); // RET

console.log(`PATCH RET @ ${addr} (offset 0x${offset.toString(16)})`);

}

function main() {

waitForModule(TARGET_LIB, (lib) => {

const base = lib.base;

console.log(` ${TARGET_LIB} base: ${base}`);

patchOffsets.forEach(offset => {

try {

patchRetAtOffset(base, offset);

} catch (e) {

console.error(`Patch failed at offset 0x${offset.toString(16)}:`, e);

}

});

});

}

setImmediate(main);

强制更新没了,正常进入app。

patch libapp.so 直接在文件偏移地址上 写入 RET 即可。

相关推荐

俄罗斯的足球前锋,俄罗斯足球名将排名
阴阳师玩家必备,揭秘游戏内水池分布,提升御魂获取效率!
宝宝起名

宝宝起名

08-31 👁️‍🗨️ 3461
英雄联盟手游塞拉斯上线时间预测

英雄联盟手游塞拉斯上线时间预测

09-22 👁️‍🗨️ 9547
世界杯足球替补有多少人 世界杯可以有几名替补队员?