Xposed框架进行Hook基础环境搭建教程
创作时间:
作者:
@小白创作中心
Xposed框架进行Hook基础环境搭建教程
引用
CSDN
1.
https://m.blog.csdn.net/weixin_51111267/article/details/139087638
目录
- 一、xposed环境搭建
- (1) 导入依赖api-82.jar
- (2) 修改AndroidManifest.xml(改为xposed模块)
- (3) 编写hook类
- (3) 增加 xposed 初始化入口
- (4) 编译为xposed模块apk
- (5) 激活刚刚的xposed模块
- (6) 连接安卓进行调试输出
- 二、hook教学
- (1) hook普通函数
- (2) 打印调用栈
一、xposed环境搭建
(1) 导入依赖api-82.jar
(2) 修改AndroidManifest.xml(改为xposed模块)
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="this is a hook script" />
<meta-data
android:name="xposedminversion"
android:value="82" />
(3) 编写hook类
package com.example.myandroidstudio;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class Hook implements IXposedHookLoadPackage {
public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable{
if(!lpparam.packageName.equals("com.app.acc"))return; // 过滤,只hook包名为com.app.acc的app
Log.d("yunxiao>>>","hook start...");
}
}
(3) 增加 xposed 初始化入口
新建一个名为xposed_init的text文件,填写Hook类的路径,如下即可
(4) 编译为xposed模块apk
编译完成后,找到apk手动安装即可
(5) 激活刚刚的xposed模块
打开xposed找到模块,打勾然后软重启即可
(6) 连接安卓进行调试输出
添加log信息过滤器,即可输出hook相应的app
注意事项:有可能调试输出没有找到相应app的包名,解决办法:重启手机
二、hook教学
(1) hook普通函数
package com.example.myandroidstudio;
import android.util.Log;
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.LoadPackageParam;
import java.util.Map;
public class Hook implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if(!lpparam.packageName.equals("com.xxx.abc")) return;
Log.d("yunxiao>>>","hook com.xxx.abc");
XposedHelpers.findAndHookMethod("abc.g$a", lpparam.classLoader, "onCallToAddSecurityFactor", String.class, Map.class, new XC_MethodHook() {
// $a 为类中类
// String.class, Map.class 为入参类型,如果入参为空则不用填,有多少个入参填多少个
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
String args0 = (String) param.args[0];
String args1 = param.args[1].toString(); // map打印输出
Log.d("yunxiao>>>","================================= hook start ==================================");
Log.d("yunxiao>>>","after args0:"+args0);
Log.d("yunxiao>>>","after args1:"+args1);
Log.d("yunxiao>>>","after result:"+param.getResult().toString());
Log.d("yunxiao>>>","================================= hook end ==================================");
super.afterHookedMethod(param);
}
});
}
}
(2) 打印调用栈
把下面代码放到
afterHookedMethod
中即可
Log.e("yunxiao>>>","Stack:",new Throwable("Stack dump"));
热门推荐
两招伸展操,缓解紧张的大腿后肌
迅速走红!春晚吉祥物,设计团队来自珠海!
吉他弹唱曲目推荐:从入门到进阶,总有一首适合你
一天正确的喝水减肥时间表
国债逆回购交易规则与购买技巧,逆回购收益展示
什么是听知觉能力?如何训练孩子的听知觉能力?
核安全基本知识培训课件
糖尿病患者能吃麦芽糖吗?一文读懂糖尿病患者的饮食管理
《魔杖之外》:德拉科·马尔福及其扮演者的故事
医院病房里真的有监控吗?这些监控又是如何使用的?
弹吉他乐理知识,完整吉他乐理知识
孙登是什么人?被立为太子的他为何33岁就死了?
机器翻译(Machine Translation,MT)
如何快速分辨化妆品的真伪?
金泽联合国教科文组织非物质文化遗产登记纪念研讨会:传统清酒酿造与饮食文化的融合
多名用户称三星手机屏幕出现绿线,客服:只能付费维修
微星小飞机怎么关闭超频
一桥飞架黄茅海,区域一体化加速!大湾区再添跨海大通道
光学教程:杨氏双缝实验装置及干涉图样
解析人不知而不愠
张雪峰谈新能源汽车工程专业就业前景、考研方向、优势与劣势
建筑幕墙玻璃热传导的U值、R值和K值的区别
《绝区零》1.0支援防护角色培养攻略
奥利司他什么时候吃效果最好
慈孝竹耐寒吗?
16马赫!港媒:中国突破斜爆震发动机,半小时从上海飞到洛杉矶
三才配置吉凶一览表详解:揭秘命运密码
人不知而不愠,不亦君子乎?
如何在冰雪路面上安全驾驶后驱车?这些驾驶技巧有哪些实际应用?
1776年北美《独立宣言》发表的重大意义