反调试 - 强制更新

强制更新

打开后提示版本太旧,提示更新,而且更新的弹窗无法取消。解决办法:

  • 关闭和打开网络:app都是刚打开时会提示更新,更新的代码不会写死在手机上,通常情况下都是刚打开时手机向后台发送一个请求,后台返回最新的版本信息,手机接收到后会进行版本对比,然后才会提示更新。**根据这个流程,可以先关闭网络,打开app,这样一开始发送版本的请求会失败,当再连接上网络时,也许就可以绕过更新。**能否绕过需要看app的逻辑,也许一开始请求失败后就不会再进行验证了,也许会不死不休,等网络一来继续验证。
  • Hook机制:找到更新弹窗的代码,通过hook让弹窗的代码失效即可。

以上介绍的两种方式,都是在前端进行的绕过,如果后端的API也更新了,那虽然绕过了前端,但前后端会出现不匹配,也会无法使用。

举例:识货

进行hook绕过:寻找版本等关键字,发现更新弹窗的位置

触发更新弹窗的就是updateDialog.show(),只要让show()函数失效即可,首先定位UpdateDialog类,但在UpdateDialog类中没有找到show函数,但也可以尝试hook:让show方法不执行,就不会出现更新弹窗。

import frida
import sys

rdev = frida.get_remote_device()  # 连接手机设备
session = rdev.attach("识货")

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()
sys.stdin.read()

在定位弹窗函数时,可以搜索的关键字除了汉字外,还可以搜索UpdateDialog





【PS:Android 逆向进阶专栏地址:https://blog.csdn.net/dafan0/category_12682484.html】

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值