Xpose 使用Demo

在安装好Xpose框架后,我们使用Xpose对 zhuceji.apk (提取码:v1bh)
进行破解。
前提准备,通过Jadx 对待破解的zhuceji.apk进行了分析,输入的数据经过checkSN进行判断处理,如果该函数最后返回true,则成功,如果是false,则失败。我们的目的是,在随意输入的情况下,直接输出true.

操作流程:

  1. 新建模块项目
  2. 编写模块代码
  3. 添加模块入口
  4. 添加模块的额外信息

1. 新建模块项目,添加jar包

项目名称随意,这里叫做XposeDemo2。这里创建一个不包含Activity的项目。在libs文件中添加 api-82.jar (提取码:zxsh),目录结构如下:

目录结构

并对build.gradle(app)文件进行修改
build.gradle

2. 编写模块代码

创建Xposehook类


Xposehook

具体代码:

package com.example.xposedemo2;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class Xposehook implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        if(loadPackageParam.packageName.equals("com.qianyu.zhuceji")){
            XposedHelpers.findAndHookMethod("com.qianyu.zhuceji.MainActivity", loadPackageParam.classLoader,
                    "checkSN", String.class, String.class, new XC_MethodHook() {
                        @Override
                        protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                            super.beforeHookedMethod(param);
                            XposedBridge.log("user: " + param.args[0]); // 在日志中输出用户名
                            XposedBridge.log("passwd; " + param.args[1]);// 在日志中输出密码
                        }

                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            super.afterHookedMethod(param);
                            param.setResult(true); // 函数返回值修改为true
                        }
                    });
        }
    }
}

这里比较难理解的是这段话

XposedHelpers.findAndHookMethod("com.qianyu.zhuceji.MainActivity", loadPackageParam.classLoader,
                    "checkSN", String.class, String.class, new XC_MethodHook() {...}

这里对于findAndHookMethod的参数进行说明:

findAndHookMethod(className, classLoader, methodName, parameterTypesAndCallback)

3. 添加模块入口

在文件夹libs下新建文件 xposed_init


文件目录

要明确的是,这里文件的名称不可以错。xposed_init的内容为,编写的模块的路径,这个是可以修改的。

4. 添加模块的额外信息

AndroidManifest.xml

添加的内容如下:

        <!-- 添加标识 -->
        <meta-data
            android:name="xposedmodule"
            android:value="true"/>

        <!-- 载入Hook模块之后显示的信息 -->
        <meta-data
            android:name="xposeddescription"
            android:value="Xposed Proxy For HOOK"/>

        <!-- 规定jar包的版本信息 -->
        <meta-data
            android:name="xposedminversion"
            android:value="54"/>

到这里模块编写完成,可以运行了。但是因为没有Activity,运行时需要在进行下设置:参阅 Android studio编译没有activity或没有default activity的应用

4. 运行程序查看效果

运行zhuceji.apk


运行效果

以上。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容