Android高效进阶:从数据到AI【3.4】

7.编写一个简单的搜索框劫持 Hook 模块( 1)需求

劫持 taptap 的搜索入口,将搜索到的所有关键字都替换为球球大作战。

( 2)编码

1. public class TestModule implements IXposedHookLoadPackage {
2. private static final String TAG = "TestModule";
3.
4. @Override
5. public void handleLoadPackage(XC_LoadPackage.LoadPackageParam
lpparam) throws Throwable {
6. Log.e(TAG, "handleLoadPackage:"+lpparam.packageName);
7. if (lpparam.packageName.equals("com.taptap")) {
// 过滤包名,只 hook taptap 的包名,
8. XposedHelpers.findAndHookMethod(EditText.class,
"getText", new XC_MethodHook
9. () {
10. @Override
11. protected void beforeHookedMethod(MethodHookParam
param) throws Throwable {
12. super.beforeHookedMethod(param);
13. }
14.
15. @Override
16. protected void afterHookedMethod(MethodHookParam
param) throws Throwable {
17. super.afterHookedMethod(param);
18. if (!TextUtils.isEmpty(param.getResult().
toString())) {
19. Log.e(TAG, "afterHookedMethod:"+param.
getResult());
20. // 通过 setResult 方法替换 getText 的返回结果
21.
param.setResult(Editable.Factory.getInstance().newEditable("球球大作战"));
22. }
23. }
24. });
25.
26. }
27. }
28. 

( 3)效果

搜索《王者荣耀》和《绝地求生:大逃杀》的时候,返回的结果如图 9-27 所示。

8. Xposed 模块编写经验总结Xposed 模块编写经验总结如下。

 实现 IXposedHookLoadPackage 接口。

 确定要 Hook 的 Android App 的包名。

 判断要 Hook 的包名。

 确定要 Hook 的 Android App 的方法。

 具体实现 Android App 的函数 Hook 调用。

Xposed 模块编写代码如下:

1. XposedHelpers.findAndHookMethod("包名+类名", lpparam.classLoader, "要
Hook 的函数名称", 第一个参数类型, 第二个参数类型……, new XC_MethodHook() {
2.
3. protected void beforeHookedMethod(MethodHookParam param) {
4. //函数执行之前要做的操作
5. }
6.
7. protected void afterHookedMethod(MethodHookParam param) {
8. //函数执行之后要做的操作
9. }
10. });
9.2.3 使用 Cydia Substrate Hook Java 和 Native

Cydia Substrate 是 Apple 越狱大神 saurik 开发的一个 Hook 工具,以前只有 iOS 版本,但由于 iOS 和 Android 都使用的是 ARM 架构,因此 Native 层的 Hook 原理差不多,移植到 Android上很方便,所以大神又写了 Android 版的 Cydia Substrate,同时支持 Hook Java 和 Native。Cydia Substrate 刚出来的时候十分强大,比 Xposed 还要强大,因为 Xposed 不支持 Native Hook,但可能由于 Android 的碎片化问题,适配非常浪费时间,所以其不对 Android 4.3 之后的版本进行适配了。其 Native Hook 部分的兼容性还是很好的,应该算是目前最稳定的 Native Hook 框架了;而其 Java Hook 部分只支持 Dalvik 虚拟机,支持到 Android 4.3 版本。所以现在一般都直接使用 Cydia Substrate 的 Native Hook 部分,再配合 Xposed 的 Java Hook,这就是比较常见的逆向手段。接下来简单介绍一下这个 Hook 框架的用法。

1.使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BinaryStarXin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值