首页 > 其他 > 详细

Frida 问题集锦

时间:2020-04-16 16:37:44      阅读:64      评论:0      收藏:0      [点我收藏+]

1. 使用过程中少用this

Activity.onStart.implementation = function() {
            console.log(‘onStart: ‘ + this);
            this.onStart();

            //public static void SomeClass.init(final Context var0)
            SomeClass.init(this);
}

上面的代码中,当调用SomeClass.init(this) 方法会导致SomeClass的初始化不成功,因为这里的this并不是Activity的this实例,应该采用下面的方式调用

Activity.onStart.implementation = function() {
            console.log(‘onStart: ‘ + this);
            this.onStart();

            //public static void SomeClass.init(final Context var0)
           var activityThis = this
            SomeClass.init(activityThis);
}

2. 通过 Java.registerClass 注册一个类时,如果需要在有参数的构造方法中调用父类有参数的构造方法需要采用下面的方式

 

var MyHandler = Java.registerClass({
        name:‘com.test.pq.MyHandler‘,
        superClass: Handler,
        methods: {
        //public Handler(Looper looper) $init:{ argumentTypes:[
‘android.os.Looper‘], implementation: function(looper){ Handler.$init.overload(‘android.os.Looper‘).call(this, looper) }}, handleMessage:{ returnType:‘void‘, argumentTypes:[‘android.os.Message‘], implementation:function(msg) { console.log(‘handleMessage:‘ + msg.what) if (1000 == msg.what) { //心跳处理 } }} } });

 

上面的代码新注册了一个Handler的子类,构造方法要实现Handle(Looper)。在调用父类的构造方法时call()方法中一定要传this实例,否则MyHandler类实例的looper将为null。

 

Frida 问题集锦

原文:https://www.cnblogs.com/cadstudy/p/12712855.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!