遇到强制更新的页面,可以选择两种方式:
- 先断网,进入系统,然后再打开网络
| -一进入app,会检查版本更新,如果发现版本较老,会提示更新,一般这种功能写在第一个页面中,换到别的页面就不会再提示了 |
- 找到源码的位置,将强制更新的页面不要弹出(此时,后端API必须得是可用的状态)
1:获取进程名称
| |
| import frida |
| |
| |
| rdev = frida.get_remote_device() |
| |
| |
| processes = rdev.enumerate_processes() |
| for process in processes: |
| print(process) |
| |
| |
| front_app = rdev.get_frontmost_application() |
| print(front_app) |
| |
2.端口转发
| import subprocess |
| |
| subprocess.getoutput("adb forward tcp:27042 tcp:27042") |
| subprocess.getoutput("adb forward tcp:27043 tcp:27043") |
3.hook脚本
| import frida |
| import sys |
| |
| rdev = frida.get_remote_device() |
| pid = rdev.spawn(["com.hupu.shihuo"]) |
| session = rdev.attach(pid) |
| scr = """ |
| Java.perform(function(){ |
| //包,类 com.azhon.appupdate.dialog.UpdateDialog |
| var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog") |
| |
| //hook替换 |
| UpdateDialog.show.implementation = function(){ |
| console.log("++++++++show来啦++++++++++++++"); |
| //this.show(); |
| } |
| |
| }); |
| """ |
| 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() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!