【原创】Android5.1 Art Hook 技术分享(二)

前文写的太多,超过字数限制了。。。

0x03
如何处理返回值
我想到的办法就是,为每一个被hook的函数都分配一个与其返回值对应的hook处理函数,由于返回值类型是确定的(8种基本类型加Object),所有我枚举的构造了9种不同返回值的hook处理函数(直接java编写)。

    private static int onHookInt(Object artmethod, Object receiver, Object[] args) {
        return (Integer) HookManager.onHooked(artmethod, receiver, args);
    }

    private static long onHookLong(Object artmethod, Object receiver, Object[] args) {
        return (Long) HookManager.onHooked(artmethod, receiver, args);
    }

    private static double onHookDouble(Object artmethod, Object receiver, Object[] args) {
        return (Double) HookManager.onHooked(artmethod, receiver, args);
    }

    private static char onHookChar(Object artmethod, Object receiver, Object[] args) {
        return (Character) HookManager.onHooked(artmethod, receiver, args);
    }

    private static short onHookShort(Object artmethod, Object receiver, Object[] args) {
        return (Short) HookManager.onHooked(artmethod, receiver, args);
    }

    private static float onHookFloat(Object artmethod, Object receiver, Object[] args) {
        return (Float) HookManager.onHooked(artmethod, receiver, args);
    }

    private static Object onHookObject(Object artmethod, Object receiver, Object[] args) {
        return HookManager.onHooked(artmethod, receiver, args);
    }

    private static boolean onHookBoolean(Object artmethod, Object receiver, Object[] args) {
        return (Boolean) HookManager.onHooked(artmethod, receiver, args);
    }

    private static byte onHookByte(Object artmethod, Object receiver, Object[] args) {
        return (Byte) HookManager.onHooked(artmethod, receiver, args);
}

而HookManager.onHooked返回的是Object类型,对于基本类型来说,我们只要对其拆箱就可以了。

0x04
结束
至此,关于android5.1上的hook就完成了,本文主要是为了解决前辈们做的hook demo遗留下来的一些问题,立志于对这一体系做一种补充,朋友们如果有其他具体问题想探讨可以加我qq313199058,感谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值