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"));
热门推荐
出口企业选小规模还是一般纳税人?利润大揭秘
南京地铁S3号线东延项目迎来重要进展,2025年底前完成用地规划
表扬法让孩子学会谦虚
【狗狗皮膚病指南】一文看狗皮膚病種類、原因、症狀及治療方式|附常見問題
网上查询酒店开房记录会面临哪些法律风险
应用回归分析:贝叶斯回归
“半大孩子”怎么骑车才是安全又合规?听听法官怎么说
时尚达人必备!变色眼镜选购指南
手机接不到电话怎么办?4种实用解决方案帮你轻松应对
追溯卞姓起源:从古代氏族到现代姓氏
湖北宜昌的旅游景点、美食推荐和最佳旅游季节
什么是AI视频压缩?AI视频压缩的原理及未来
农村池塘里的"水上漂":揭秘水黾的神奇生存智慧
在抖音,看见体育版权生意的新思路
豆瓣9.7分,这本大哲学家写的哲学史,一生至少要读一次
牙疼速度止疼的方法有哪些
春秋战国时期的服饰款式与文化内涵
关于肺结核,你究竟了解多少?
《哪吒2》破50亿票房:中国动画电影的工业化突破
比特币和区块链详解:中本聪白皮书深度解读
财富通每日策略:A股韧性显现,三大指数震荡反弹
手动挡六个挡位起步正确步骤
5大生肖不宜佩戴朱砂你的生肖是否适合 生肖佩戴朱砂的禁忌与建议
针式打印机一打印就显示错误的原因及解决方法(常见针式打印机错误及排除技巧)
防爆胎和普通轮胎的区别:材质、结构、性能全方位对比
大米检测标准及常规检测项目?
地下水氟化物检测的方法及重要性
以生物法为核心的废水处理系统,解决NMP废水的问题
AI短视频脚本创作指南:初学者的步骤与技巧
办公软件表格都有哪些