Xposed 学习笔记
Xposed框架用法
1、配置AndroidManifest.xml
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="获取packageName" />
<meta-data
android:name="xposedminversion"
android:value="30" />
2、在assets目录下创建xposed_init文件声明入口类
3、gradle中引入编译时使用
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
4.入口类实现IXposedHookLoadPackage接口即可。
5、使用方法:
XC_LoadPackage.LoadPackageParam
hook方法
XposedHelpers.findAndHookMethod
(1)、获取activity实例
Class<?> clazz=XposedHelpers.findClass(
"com.android.mms.data.WorkingMessage", lpparam.classLoader);
hook方法
findAndHookMethod("com.tencent.mm.ui.LauncherUI", loadPackageParam.classLoader, "onCreate", Bundle.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Activity activity = (Activity) param.thisObject;
//调用这个方法的类对象 param.thisObject;
//方法的返回值 param.getResult();
//方法的参数 param.args[]
}
});
对于hook没有参数的方法,就不需要参数,如onResume():
XposedHelpers.findAndHookMethod("com.rjb.mytest.MainActivity", loadPackageParam.classLoader, "onResume", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
}
});
(2)、获取field修改
field set get
1、需要Field field=clazz.getgetDeclaredField("xx");
2、需要类的实例化对象 object
3、field.set(object,value);
相关文档:http://api.xposed.info/reference/packages.html
http://www.tuicool.com/articles/aaaEfmu
获取Context
Context context = (Context) callMethod(callStaticMethod(findClass("android.app.ActivityThread", null), "currentActivityThread", new Object[0]), "getSystemContext", new Object[0]);
我的工具类
1、下载文件
private void downloadFile(String url,String path) {
try {
URLConnection connection = new URL(url).openConnection();
FileOutputStream outputStream = new FileOutputStream(path);
InputStream is = connection.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
while ((len = is.read(bs)) != -1) {
outputStream.write(bs, 0, bs.length);
}
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2、通知栏
自定义布局要用到RemoteViews
3、反射
获取目前顶置的activity
adb shell dumpsys activity top
脱壳工具
ZjDroid
http://www.cnblogs.com/goodhacker/p/3961045.html?utm_source=tuicool&utm_medium=referral
Xposed 学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- java学习笔记之集合家族2
集合体系 一.数据结构 List集合储存数据结构 <1>堆栈结构 特点:先进后出 <2>队列结构 特点:先进先出 <3>数组结构 特点:查询快,增删慢 <4& ...
- 记一次高并发场景下.net监控程序数据上报的性能调优
最近在和小伙伴们做充电与通信程序的架构迁移.迁移前的架构是,通信程序负责接收来自充电集控设备的数据实时数据,通过Thrift调用后端的充电服务,充电服务收到响应后放到进程的Queue中,然后在管理线程 ...
- 自己主动化 远程登陆linuxserver并运行命令 —— expect
原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/41149429 LinuxserverA登陆LinuxserverB s ...
- codevs1050
题目地址:http://codevs.cn/problem/1050/ 分析: 最開始想直接用状压做,发现怎么都想不出来.就和当年的多行多米诺骨牌(这道题至少最后还是把普通状压做法看懂了). 直到听到 ...
- 豌豆夹Redis解决方式Codis源代码剖析:Proxy代理
豌豆夹Redis解决方式Codis源代码剖析:Proxy代理 1.预备知识 1.1 Codis Codis就不详细说了,摘抄一下GitHub上的一些项目描写叙述: Codis is a proxy b ...
- Windows 下Oracle database 9i 64bit 仅仅有 Windows Itanium 64bit
Windows 下Oracle database 9i 64bit 仅仅有 Windows Itanium 64bit,没有Windows x86-64bit的 详细请见例如以下的certificat ...
- Android 获取手机信息
private void initData() { TelephonyManager mTm = (TelephonyManager) getActivity().getSystemService(C ...
- Struts2报错org.apache.jasper.JasperException: Invalid directive原因
struts标签书写错误.<s:textfield name="us.username"/>对的<s:textfield name="us.userna ...
- selenium+python安装配置
一.安装步骤 1.python安装 2.selenium安装 2.1. 方法一:在Windows命令行(cmd)输入pip install selenium即可自动安装selenium,安装完 ...
- ASP.NET Core 使用 Redis 客户端
Mac OS 安装 Redis(用于连 Redis 服务器,方便查看数据):https://redis.io/topics/quickstart wget http://download.redis. ...