新建一个android工程
工程内新建一个lib目录
1 将xposed的jar api包放进来
api-82.jar
api-82-source.jar
2
在两个jar包上右键Add as library 点击OK确认
配置这两个jar包为provided.因为安装xposed框架的时候框架里面会自动带。所以要把compile修改为provided
在File-->project structure->app->dependecies里面
将两个依赖都修改为provided
如果是新版本的as 需要修改 gradle中变为
compileOnly files('lib/api-82.jar') compileOnly files('lib/api-82-sources.jar')
3 添加一个启动类 siin.java 并且实现这个public类 (继承IXposedHookLoadPackage )
实现了一个方法 handleLoadPackage。这个方法在启动一个app的时候就会被调用。所以我们主要的hook行为就是在这个里面做的,这里先简单实现一个打印吧。
package com.huskar.im.siin;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
import com.huskar.im.siin.silog;
/**
* Created by iamhuskar on 2018/6/20.
*/
public class siin implements IXposedHookLoadPackage
{
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
{
silog.log("load app: " + loadPackageParam.packageName);//显示加载的 app 名称
}
}
每一个APP加载的时候就会打印名字
4新建assets目录和xposed_init文件指定入口函数
指定了类名siin。这样框架在加载插件的时候就能找到对应的 handleLoadPackage函数并加载了
5接下来就是在AndroidManifest.xml标记这个app是一个xposed模块了。
在<application>标签内添加三个meta-data元素
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="HookDemo" />
<meta-data
android:name="xposedminversion"
android:value="53" />
第一个说明这是个xposed模块
第二个是模块的说明
第三个是最小的xposed接口版本。
我们用的是xposed 80版本。这里写个低于80的53就行了
编译生成apk 安装到已有xposed框架的手机上
接下来任意启动一个进程
我们就能在日志打印中看到对应的记录
后续接着看怎么HOOK