前言:当我们需要逆向某款app的特定版本,并且不是最新版本时,而app又有强制更新机制,该怎么办呢?
1.如下图所示
2.解决这种更新一般有两个版本
2.1:关闭手机网络,打开app后,再次开启网络(low,并且在使用过程中可能再次出现更新弹框)
2.2:通过hook机制,跳过弹框触发的请求
3.以上图app为例,当我们反编译该app后,搜索版本
3.1:
3.2:点击进入,查看对应的代码
3.3:根据字面意思,猜测,这里应该是检测app版本并且弹出更新框的地方,如是我们通过hook验证
4.hook上述的方法,跳过show()
import frida
import sys
rdev = frida.get_remote_device()
pid = rdev.spawn(["com.hupu.shihuo"])
session = rdev.attach(pid)
scr = """
Java.perform(function () {
// 包.类
var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog");
// Hook,替换
UpdateDialog.show.implementation = function(){
console.log("-----------------------show来了-----------------------");
//var res = this.show();
//return res;
};
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()
5.手机开启frida服务,设置端口转发--执行上述hook脚本后,我们发现app没有更新提示了。