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"));
热门推荐
合格评定:助力电子商务高质量发展
科比·布莱恩特的篮球基本功训练秘籍
掌握这些技巧,让你的年会发言脱颖而出
公司年会发言不紧张的小技巧
公司年会个人介绍,教你如何惊艳全场
年会个人介绍如何出彩?这些职场沟通技巧请收好
制作剁椒鱼头,选对鱼头是关键:三种优质鱼类详解
威海千里山海自驾游:春赏花夏戏水,1001公里海岸线全攻略
自制沙丁鱼菠菜猫零食:让猫咪毛发更亮丽的健康小食
东方市:海南最不像热带的热带城市
法国皇家教你选猫粮,保障猫咪饮食安全
十二生肖与八字命理:谁更能决定命运?
八字命理揭秘:宿命论or逆袭人生?
盗走九阴真经,黑风双煞如何成为江湖公敌
黑风双煞:梅超风陈玄风的爱恨江湖路
疫情防控常态化下,我国发布统一应急避难场所标志标准
应急避难场所标志国家标准发布,规范设计助力安全逃生
激光VS果酸,谁更能拯救你的毛周角化?
男孩房间装修,如何兼顾颜值和心理健康?
男孩房间颜色搭配:科学育儿新趋势
独居男孩自装30㎡小家,火爆全网!
南方出版社:用2.7亿字铸就出版史上的“万里长城”
马来西亚榴莲成熟度的秘密:品种特点与选购技巧全攻略
如何通过榴莲成熟度辨别甜度?
大众EA系列发动机,二手车真的靠谱吗?
修车工揭秘:如何一眼识破二手发动机陷阱?
买二手奥迪A4L,如何检查发动机?
广州至广州、汕头至汕头:广东新增两条环形高铁
桑寄生:补肝肾安胎的养生佳品,6种日常食用方法详解
桑寄生:既能祛风湿又可安胎,还具多重保健功效