hooker内存漫游查看对象内部属性数据

本文介绍了如何利用Hooker工具获取Android对象的内部属性数据,包括通过a、b、c命令获取ObjectId,hook构造方法和普通方法,以及执行hook脚本来查看和操作对象属性。还详细阐述了c和v命令的使用场景,以及如何借助object_store.js动态打印和序列化对象。
摘要由CSDN通过智能技术生成

最近,有粉丝问我hooker如何获取对象内部属性数据。
111.png-67.9kB
无论是a、b、c命令扫描出来的对象,还是你hook脚本hook方法对应的所属对象都有办法获取内部属性数据。

关键条件:ObjectId!!!大家一定要搞到你要窥视这个对象的ObjectId。

a、b、c命令扫描出来的对象获取内部属性

abc命令扫描的对象,都会自动生成ObjectId。以a命令扫描Activity为例
222.png-1038.1kB

hook脚本对应的对象

hook脚本默认不会给你ObjectId,这时候你要手动把对象放入ObjectStore当中。

hook构造方法的方式获取ObjectId

444.png-589.4kB
上面是hook某个对象的构造方法,我们把new之后的对象放到ObjectStore中。

hook普通方法的方式获取ObjectId

如果这个方法有参数,并且是对象我们也可以将参数放到ObjectStore中。

Java.perform(function() {
    var HookedClass = Java.use('com.xxx.bbb.xxx.GoodsDetailResult$Data');
    var setProductDetailMethod = HookedClass.setProductDetail.overload('com.xxx.bbb.bean.ProductDetail');
    setProductDetailMethod.implementation = function(v0) {
        var executor = this.hashCode();
        var beatText = 'public void com.xxx.bbb.xxx.GoodsDetailResult.setProductDetail(com.xxx.bbb.bean.ProductDetail)';
        var beat = newMethodBeat(beatText, executor);
        setProductDetailMethod.call(this, v0);
        //hook对象的普通方法将参数对象放到ObjectStore中
        storeObjectAndLog(v0);
        
        //这里还是可以将方法本身的对象this放到ObjectStore,不一定得hook在上面的构造方法,活学活用!!!明白?
        storeObjectAndLog(this);
        printBeat(beat);
    };
});

各种情况看你怎么用,天下无招胜有招。我不能说只有这两种方式,有N多种。看你是否能领悟到hooker设计的强大之处,活学活用吧!

执行hook脚本获取ObjectId

555.png-832.6kB

上面两个方法,随便你用什么方法。只要获取到ObjectId就ok。
通过ObjectId,获取对象内部属性有两种方式。

c命令扫描普通对象

c命令,以最快捷的方式打印对象
333.png-1267.3kB

v命令扫描view对象

如果你确定一个对象是View的子类,可以用v命令扫描。v命令将会带出绑定的时间,如点击、滑动、长按、初始化等等
这里我不展示了,大家感兴趣自己是实践!

通过操作object_store.js方法动态打印对象

直接通过objectId将object序列化为json输出

666.png-1199.1kB

动态取得objectId对应的对象的内部属性

777.png-598.7kB

888.png-1264.8kB

总结

不吹牛逼,不刷屏,脚踏实地做事情!
https://github.com/CreditTone/hooker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值