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

使用Frida调用getPackageInfo方法时遇TypeError错误求助

Frida hook getPackageInfo 报错 TypeError 解决方法

你在 hook android.app.ApplicationPackageManager 的getPackageInfo方法时触发了错误:TypeError: cannot read property 'getPackageInfo' of undefined,问题出在return this.getPackageInfo.overload('java.lang.String','int').call(this,pname,f);这一行。

错误原因

在Frida通过Java.use生成的类的implementation回调里,this指向当前被hook的实例,但直接通过this.getPackageInfo访问会因为原方法被重载覆盖,导致找不到对应方法引用,进而抛出undefined错误。

修正代码

以下是两种可行的修正方式,推荐第一种更简洁的写法:

Java.perform(()=>{
    const jPM=Java.use('android.app.ApplicationPackageManager');
    jPM.getPackageInfo.overload('java.lang.String','int').implementation=(pname,f)=>{
        console.log("Called => getPackageInfo (Flag="+f+", Pkg="+pname+")");
        // 方式1:用$super调用原始方法实现(推荐)
        return this.$super.getPackageInfo(pname, f);
        
        // 方式2:通过类模板的方法指定实例调用
        // return jPM.getPackageInfo.overload('java.lang.String','int').call(this, pname, f);
    }
});

说明

  • $super是Frida提供的语法,用于在hook的方法实现中调用原始的方法逻辑,无需手动指定overload,Frida会自动匹配参数类型。
  • 如果坚持用overload方式,需要通过Java.use获取的类模板(即jPM)来调用方法,并将this(当前实例)作为call的第一个参数传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:16