xposed 04 - 方法调用与加壳app处理

本文介绍了如何在Xposed模块中调用被加壳应用的方法,包括使用`callStaticMethod`、`callMethod`和`newInstance`,并揭示了如何针对加壳应用进行Hook,特别关注了类加载器和脱壳原理的应用。

本文主要讨论如何在 xposed 模块中调用app中的方法,以及如何 hook 加壳的 app。

调用app中的方法

主要依靠 xposed 提供的几个 api,使用起来类似反射,不过比反射要简单的多。

静态方法

public static java.lang.Object callStaticMethod(java.lang.Class<?> clazz, java.lang.String methodName, java.lang.Object... args)

public static java.lang.Object callStaticMethod(java.lang.Class<?> clazz, java.lang.String methodName, java.lang.Class<?>[] parameterTypes, java.lang.Object... args)

需要的参数:

  • 类名

  • 方法名

  • 方法参数类型,是数组,比如有两个参数,形式应为:java.lang.Class<?>[] parameterTypes = {String.class, int.class}; ,也可以不传,xposed 会自动匹配参数类型。

  • 方法参数值

实例方法

public static java.lang.Object callMethod(java.lang.Object obj, java.lang.String methodName, java.lang.Object... args)

public static java.lang.Object callMethod(java.lang.Object obj, java.lang.String methodName, java.lang.Class<?>[] parameterTypes, java.lang.Object... args)

参数与调用静态方法就第一个参数不一样,显然实例方法需要对象,静态方法需要类对象。

构造方法

public static java.lang.Object newInstance(java.lang.Class<?> clazz, java.lang.Object... args)

public static java.lang.Object newInstance(java.lang.Class<?> clazz, java.lang.Class<?>[] parameterTypes, java.lang.Object... args)

需要的参数:

  • 类名

  • 方法参数类型,是数组,比如有两个参数,形式应为:java.lang.Class<?>[] parameterTypes = {String.class, int.class}; ,也可以不传,xposed 会自动匹配参数类型。

  • 方法参数值

加壳app的hook

想要hook加壳app中的方法,需要先知道两个基础知识:

  • 加壳原理

  • 脱壳

脱壳现在有很多的开源项目与脚本,fart,dexdump 都可以完成,只不过可能有些app做了 frida 特征识别,导致脱不下来,这个后面会说到。

加壳的原理其实也不难,简单来说就是,开发者编写的app被藏起来了,展示给我们看的只是包着app的一个壳,所以我们无法看到里面的app内容。但是一个重要的点是,app始终是要运行的,既然要运行,那么壳就会将它包着的app内容给拿出来,所以只要抓住这个点就能很好的理解脱壳。

至于加壳,就是相当于先将 app 给加密,然后在某个时机再解密出来,让其运行。具体可以看下面这些文章:

https://bbs.kanxue.com/thread-254555.htm

https://bbs.kanxue.com/thread-252630.htm

https://bbs.kanxue.com/thread-254028.htm

实战

看一个例子,材料已上传到 p23 (lebo.apk)。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二手的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值