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"));
热门推荐
2025年,电动车、三轮车合法上路不被罚,交警:须满足这3点要求
干货!分享自用多年的日内交易技术指标(VWAP,EMA)
美海军“超级大黄蜂”战机战术体系升级
传明酸跟烟酰胺哪个美白效果好?
折叠屏手机维修成本高,有的换屏费用能买一部新手机
苹果种植技术全攻略:从选址到日常管理
首都通勤圈已涵盖13个环京区县 吸引范围不断扩大
体制内培训课程详解
仙桃怎么吃?解析仙桃功效+禁忌,营养比酪梨高、膳食纤维超过地瓜
哪些检查需要空腹?空腹抽血能喝水吗?
心率过缓最佳锻炼方法
降压药中的4个“冠军药”,保护心脑肾,优缺点各不同
九年义务教育:为每个孩子铺就美好未来的基石与挑战
我国医生职称体系及其晋升制度详解
“三驾马车”共同拉动癫痫治疗新发展
法令纹木偶纹去除的方法
债市互联互通机制重磅优化 系列增量举措践行高水平开放
购房首付一般多少?解读购房首付和还贷压力
语法形容词的比较级和最高级形式(超详细)
年后中药材市场热钱撤离,平顺潞党参、连翘价格均有所下跌
夫妻离婚房产分割:四种常见情况详解
国内票房最高的一天,是怎么炼成的?
怎样申请分居证明
一本通存折余额查询攻略:四种便捷方式全解析
全自动运行系统(FAO)是城市轨道交通技术发展方向 行业前景广阔
iPhone无法连接Wi-Fi?7个实用解决方案帮你轻松应对
特发性震颤:你需要了解的运动障碍
客服系统与大数据的融合:实现客户价值最大化
电地暖如何降低电费,让它更省电呢?
笔记本电脑选购的五大关键因素详解