在安装好Xpose框架后,我们使用Xpose对 zhuceji.apk (提取码:v1bh)
进行破解。
前提准备,通过Jadx 对待破解的zhuceji.apk进行了分析,输入的数据经过checkSN进行判断处理,如果该函数最后返回true,则成功,如果是false,则失败。我们的目的是,在随意输入的情况下,直接输出true.
操作流程:
- 新建模块项目
- 编写模块代码
- 添加模块入口
- 添加模块的额外信息
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

运行效果
以上。