You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Frida Hook Android应用check方法时崩溃,如何修改脚本跳转第二个Activity

问题根因

  • Hook方法参数不匹配:目标check()是无参方法,你重写实现时错误声明了入参v,方法签名不匹配触发崩溃
  • 环境兼容冲突:你的模拟器安装了Xposed框架,Frida 15.1.3与Android 7.1 x86环境下的Xposed存在内存访问冲突,触发SIGSEGV错误
  • 注入时机错误:--no-pause参数会让应用在注入完成后立刻启动,部分场景下Hook逻辑还没执行完成就调用了目标方法,也会引发异常

修正后的Frida脚本vault.js

Java.perform(function() {
    // 等待MainActivity实例加载完成再执行Hook,避免类未加载报错
    Java.choose("com.g.fridaplay.MainActivity", {
        onMatch: function(instance) {
            console.log("找到MainActivity实例,开始Hook");
            var theClass = Java.use("com.g.fridaplay.MainActivity");
            // 无参方法重写不要添加多余参数
            theClass.check.implementation = function() {
                console.log("已Hook check()方法,强制返回true");
                return true;
            }
        },
        onComplete: function() {
            console.log("Hook操作执行完成");
        }
    });
})

调整后的执行步骤

  1. 先确认frida-server权限和启动正常:
adb shell
su
chmod 755 /data/local/tmp/frida-server-15.1.3-android-x86
./data/local/tmp/frida-server-15.1.3-android-x86 &
  1. 执行Frida命令时去掉--no-pause参数:
frida -U -l vault.js -f com.g.fridaplay

兼容问题兜底方案

  • 如果执行后依然崩溃,建议临时禁用模拟器内的Xposed框架,或者将PC端frida和模拟器内frida-server统一降级到14.2.18版本,该版本对Android7.1 x86环境兼容性更好,无Xposed冲突问题
  • 也可以直接反编译APK修改check方法对应的smali代码,强制返回true后重打包签名运行,也能实现跳转到第二个Activity的需求

内容的提问来源于stack exchange,提问作者Nikita K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:36:04