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"));
热门推荐
NASA最新研究:奥林匹斯火山喷发如何重塑火星气候?
王者荣耀曹操最强出装攻略:半肉流派轻松秒杀敌方脆皮!
看华裔新生代如何推介中国文化生活
钮氏家族:从春秋战国到当代的文化传承
《冷傲太子爷竟独宠我一人》:一场豪门爱情的反转人生
‘七情六欲’指的是什么?了解七情六欲的具体内容
五一探秘呀诺达雨林,解锁北纬18度神秘之旅!
三亚亲子游必打卡:海花岛&亚特兰蒂斯,让孩子们玩到不想回家!
三亚必打卡:热门景点拍照攻略
亚龙湾vs天涯海角:三亚两大景点深度对比,哪个更值得去?
科学与迷信的分界线:可证伪性是关键
司马南的简介和资料
储蓄卡、借记卡与信用卡:这些银行卡到底有什么区别?
同样是银行卡,有的叫“储蓄卡”,有的叫“借记卡”,有什么区别
安徽医大口腔医院专家提醒:这些口腔护理细节很重要
黄轩医师详解:舌头咬破后的正确处理方法
均衡饮食,远离舌癌风险!
咬舌频发?当心是这种脑血管疾病的预警信号!
火星探测器揭秘:奥林匹斯火山新发现!
主流软件实现RSA PKCS1 v1.5加密全攻略
PKCS #1 v1.5:加密界的“老古董”,你了解吗?
PKCS #1 v1.5:现代网络安全的基石
冬季加湿器使用指南:如何避免引发肺炎?
加湿器里加香薰精油?医生:别作死!
冬季加湿器选购指南:告别干咳,享受湿润空气
掌握科研方法,写出专业的小试实验报告:《信息资源组织与管理》秘籍
Excel高效整理小试实验数据,提升科研效率!
《Subnautica》带你探秘深海生物奇观
南海深处的神秘礼物:从沉船考古到蛇菇洞穴
双十一剁手党必看:道家智慧教你理性消费