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"));
热门推荐
英国的人口数量是多少?
如何告别宅居待业 融入社会
山西“盛唐遗韵——中国盛唐建筑记忆展”盛大开幕!
4个被低估的行为,让你增长更多肌肉
提升用户体验、创新产品与高效运营,企业发展三驾马车
辅助生殖进医保,各地政策有何不同?
如何准确判断国际黄金行情的准确性?有哪些方法可以提高判断的可靠性?
如何判断自己是否得了圆锥角膜?
《出师表》文言文的学习技巧
毕业论文结论写作指南:格式、内容与常见误区
退休干部能否担任公司法人:法律解读与实务分析
重视儿童出行安全 预防与现场急救要点全掌握
市值管理火了!40多家A股公司披露相关制度,哪些资本运作值得划重点
如何理解资本运作并评估其潜在风险?这种资本运作如何实现可持续投资发展?
梦见重病的人:从心理学和传统文化角度的解读
花间词中的情感隐喻与表现手法
政策因素是如何影响尿素期货价格的?
世嘉 Dreamcast 架构:一款划时代游戏主机的技术解析
《人类政治发展史-082》中国战国时期
商标转让所需材料全攻略
红色的花卉品种,打造热情似火的开花效果
昆明周边游三天自驾游路线推荐
手足“情深”,需精心呵护——带你了解手足综合征
怎样写好工作总结|搭出合理的脉络框架
李进教授:强强联合,HER2阳性晚期GC/GEJC的一线治疗新探索
二级医院是什么意思?了解二级医院的定义与医疗服务
如何评估收购黄金的价格合理性?这种合理性如何依据市场标准进行判断?
如何在K线图上进行有效的标注操作?这种标注操作有哪些技术要求?
文化中国行|花灯映年韵——记陕西省非物质文化遗产长安砲里年节花灯习俗
SN是什么意思?一文带你全面了解SN的含义与用法