-
前言:当我们需要逆向某款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没有更新提示了。