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"));
热门推荐
马齿苋:药食同源的秘密武器
长寿菜的秘密:马齿苋的健康密码
马齿苋敷脸真的有用?皮肤科医生这样说
王蓉《小蛮腰》再掀健身热潮?真相令人捧腹!
《小蛮腰》火遍全网,Mc麦铛铛再创神曲
阀门试验装置:确保工业安全的关键装备
详解俄玉棉絮:特性、用途、选购与保养全攻略
羽绒被护理指南:从清洗到晾晒的正确方法
告别棉花被:重量大、难清洗,新型被子更胜一筹
塔西佗、约瑟夫斯记载佐证,耶稣存在性获权威证实
云南元阳梯田摄影秘籍,你get了吗?
摩云山梯田:济南最大梯田群的四季美景打卡指南
解离性人格障碍可治,三阶段心理治疗助患者康复
普通家庭,也需要规划财富传承
收入一样的情况下,为什么女性承担更多家务劳动?
从1001万大奖争议到直播开奖:彩票公信力如何重建
大乐透开奖:江苏独中千万,未追加成最大遗憾
瞿塘峡:长江第一峡的雄奇与生态守护
瞿塘峡:晨昏“冷烟”与千年文化共绘三峡胜景
八大维度守护电脑安全:实用防护指南
视频侵权处理:隐私保护的法律要点与应对方案
微信视频通话美颜技巧:从设置到自然呈现
12大措施筑牢网络安全防线,这些防护要点要记牢
吸引高潜质员工
如何发展职业文化:塑造职场新生态
KPI绩效考核三要素:关键因素、衡量标准与绩效评估方法
熊大:《熊出没》中的智慧与勇气化身
多重人格障碍治疗:心理治疗为主,低剂量药物为辅
令人抓狂的“初二现象”,每个孩子都会经历,家长如何帮孩子度过?
英语零基础,小学高年级觉得很吃力?做好这六点,英语满分很简单