Xposed与lsposed异同点
Xposed支持到安卓7.1
Xposed会将激活的模块注入到每个进程,需要自已在模块内根据包名过滤
Xposed激活模块后重启系统生效
lsposed支持安卓8.1-14
1sposed激活模块后需要勾选要作用于哪些app
lsposed激活模块后重启对应app生效
lsposed模块的写法与Xposed一样
设备要求
使用官方原版系统
不能刷KernelSU的设备,使用Magisk来root和安装 lsposed
能刷KernelSU的设备,直接安装下面三个就行了。
安装步骤
**KernelSU_v0.7.1_11366**: https://github.com/tiann/KernelSU/releases/tag/v0.7.1
`lsposed依赖`
**Zygisk-Next-v4-0.8.1-111**: https://github.com/Dr-TSNG/ZygiskNext/releases/tag/v4-0.8.1
`lsposed`
**LSPosed-v1.9.2-7024-zygisk**: https://github.com/LSPosed/LSPosed/releases/tag/v1.9.2
`用来隐藏lsposed 和 lsposed依赖,防检测(还没试)`
**Shamiko-v0.7.4-188**
使用magisk安装 lsposed
`1,打开Magisk – 设置 – 开启 Zygisk`
`2,安装 LSPosed模块, zygisk版`
**LSPosed-v1.9.2-7024-zygisk**: https://github.com/LSPosed/LSPosed/releases/tag/v1.9.2
推送到手机 /sdcard/ 目录
C:\Users\ASUS>adb push "E:\下载\LSPosed-v1.9.2-7024-zygisk-release.zip" /sdcard/
在 magisk 中点击从本地安装后,使用 RootExplorer 浏览文件,zip文件模块就可以点击安装了
**正常情况下此时 通知栏 就可以看到 lsposed**
如果没显示,重启设备,可以通过拨号键输入 `*#*#5776733#*#*` 进入LSPosed
`3,安装 lsposed 依赖模块`
**Zygisk-Next-v4-0.8.1-111**: https://github.com/Dr-TSNG/ZygiskNext/releases/tag/v4-0.8.1
安装方法和2一样
`4,lsposed修改设置`
创建 lsposed 工程
使用androidStudio创建一个 lsposed 工程
这里默认
配置工程
1, AndroidManifest.xml 声明 xposed 模块
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="del Hook Demo" />
<meta-data
android:name="xposedminversion"
android:value="54" />
第一个 meta-data 模块声明,**固定**
第二个 meta-data 模块描述
第三个 meta-data 模块最小支持版本
配置环境,api.jar
将 api.jar 放入**app的libs目录下**,
在 api.jar 上右键, add as library... OK --添加为一个库文件
转成库文件之后,**build.gradle.kts** 配置文件中会多出一行配置
`implementation(files("libs\\api.jar"))`
将他改为, 意思是不将这个 api.jar 编译打包
compileOnly(files("libs\\api.jar"))
2, 自定义一个入口类Main
在src/main下 创建 assets 目录,在里面创建 xposed_init 文件,该文件中写入模块入口类全路径
**创建 assets 目录:** New --> Folder --> Assets Folder
**assets 目录下 创建 xposed_init 文件**
**与MainActivity文件同级,在这里创建一个自定义类Main,做为程序入口类**
将这个自定义**程序入口类 Main 的包名** com.del123.lsposeddemo.Main **写入 xposed_init** 文件中
3,配置自定义Main类,实现IXposedHookLoadPackage接口
package com.del123.lsposeddemo;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class Main implements IXposedHookLoadPackage {
public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
// 此处写hook代码
Log.d("del123", "lsposed Hooking...");
// Xposed框架需要判断 包名 与 app包名 是否一致
// if(!loadPackageParam.packageName.equals(PackageName)) return;
}
}
5,测试hook
使用AndroidStudio 编译 lsposeddemo 模块(apk文件),
outputs/apk/debug/app-debug.apk 安装到手机
adb install .../app-debug.apk
cmd 命令,获取 lsposeddemo 模块输出
adb logcat | findstr ooking
打开当前安装的 lsposeddemo 模块即输出打印