|
Lsposed Hook 环境搭建
Lsposed的开发环境同Xposed的一致。
首先,我们打开Android Studio创建一个空项目,不需要任何Activity
编辑settings.gradle,我们需要引入Xposed的库,不过它并没有上传到MavenCentral上,所以我们需要在settings.gradle里修改一下(gradle 7.0+)
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://api.xposed.info/' } // 添加这一行即可
}
}
编辑app级build.gradle,进入我们app目录下的build.gradle引入xposed的依赖,当然你也可以移除所有依赖来让安装包变小
dependencies {
compileOnly 'de.robv.android.xposed:api:82'
}
创建一个模块作用域文件,在values目录下创建一个名叫arrays的资源文件,它的内容如下:
<resources>
<string-array name="xposedscope" >
<!-- 这里填写模块的作用域应用的包名,可以填多个。 -->
<item>com.jinshuangshi.xueshan</item>
</string-array>
</resources>
我们在Run那里编辑一下启动配置,勾选Always install with package manager并且将Launch Options改成Nothing
AndroidManifest.xml 配置
<application
android:allowBackup=... >
<!-- 是否为Xposed模块 -->
<meta-data
android:name="xposedmodule"
android:value="true"/>
<!-- 模块的简介(在框架中显示) -->
<meta-data
android:name="xposeddescription"
android:value="我是Xposed模块" />
<!-- 模块最低支持的Api版本 一般填54即可 -->
<meta-data
android:name="xposedminversion"
android:value="54"/>
<!-- 模块作用域 -->
<meta-data
android:name="xposedscope"
android:resource="@array/xposedscope"/>
</application>
入口文件建立
在main下新建asserts资源目录,并在下一级建立xposed_init文件,在xposed_init内添加入口类
com.jinshuangshi.xueshan.MainHook
创建类文件实现MainHook的代码,编写测试代码
打印目标app的包名
package com.jinshuangshi.xueshan;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
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 MainHook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("sum=hello loaded app:"+lpparam.packageName);
// 过滤不必要的应用
if (!lpparam.packageName.equals("com.example.xueshan2")) return;
// 执行Hook
hook(lpparam);
}
private void hook(XC_LoadPackage.LoadPackageParam lpparam) {
// 具体流程
}
}
开启
参考:
https://blog.ketal.icu/cn/Xposed ... %E6%95%99%E7%A8%8B/
使用Xposed来对微信小程序的js API进行hook |
|