美文网首页
XposedHook实例

XposedHook实例

作者: MagicalGuy | 来源:发表于2018-10-10 00:50 被阅读0次

Hook 获取序列号函数 例子

  1. 建立一个空工程,编写获取序列号的简单例子
  1. 获取手机状态需要设置权限
    <uses-permission
    android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  2. 编写布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="com.bluesson.test.MainActivity">
 <TextView
 android:id="@+id/tv1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Hello World!" />
 <TextView
 android:id="@+id/tv2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Hello World!" />
</LinearLayout>
  1. 编写主 Activity 类中的 onCreate 函数
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 TextView tv1 = (TextView) findViewById(R.id.tv1);
 TextView tv2 = (TextView) findViewById(R.id.tv2);
 TelephonyManager tm = (TelephonyManager) 
getSystemService(Context.TELEPHONY_SERVICE);
 tv1.setText("imei: "+tm.getDeviceId());
 tv2.setText("imsi: "+tm.getSubscriberId());
}
  1. 完成安装
  1. 建立一个无 activity 的工程,编写 Xposed 插件
  1. 设置清单文件
    在 application 标签中增加模块说明信息
<application
 android:label="@string/app_name">
 <!-- 使 xposed 模块有效 -->
 <meta-data android:name="xposedmodule" android:value="true"/>
 <!-- xposed 模块名称 -->
 <meta-data android:name="xposeddescription" android:value="Xposed
模块示例"/>
 <!-- xposed 模块最低版本 -->
 <meta-data android:name="xposedminversion" android:value="54"/>
</application>
  1. 导入 xposed 库文件
    将 xposed 库文件 XposedBridgeApi-XX.jar,放入 app/lib 文件夹下
    需要设置包的依赖,在工程文件夹右键,打开模块设置
image.png

选择对应的模块,app,右边选择依赖项,增加依赖

image.png

选择文件,导入对应包

image.png

需要注意的是:修改 Scope 为 Provided

image.png
  1. 创建一个类,Main,实现 xposed 中的接口 IXposedHookLoadPackage 并重写方法
    handleLoadPackage
public class Main implements IXposedHookLoadPackage {
 @Override
 public void handleLoadPackage(XC_LoadPackage.LoadPackageParam 
lpparam) throws Throwable {
 // 不是需要 Hook 的包直接返回
 if (!lpparam.packageName.equals("com.bluesson.test"))
 return;
 XposedBridge.log("Loaded app: " + lpparam.packageName);
}
}
  1. 声明主入口类路径
    需要在 main 文件夹下建立 assets 文件夹中新建一个 xposed_init 的文件,并在其中声明
    主入口类

我们的主类:com.hello.xposdplugin.Main

  1. 以上做完可以做测试了
    在模拟器或者真机中安装 xposedinstall
    最新的稳定版:de.robv.android.xposed.installer_v32_de4f0d.apk
    安装之后,在 xposed 的模块中可以找到我们安装的 apk(其实就是一个 xposed 插件)
image.png

选中重启之后,再安装测试的 apk 进行测试

  1. Hook 类方法 需要在刚才重写的 handleLoadPackage 方法中添加代码
// 找到对应的方法,进行替换
// 参数 1:类名
// 参数 2: 方法名
// 参数 3:实现监听,重写方法
// replaceHookedMethod 替换方法
// beforeHookedMethod 方法前执行
// afterHookedMethod 方法后执行
XposedHelpers.findAndHookMethod(TelephonyManager.class, 
"getDeviceId", new XC_MethodReplacement() {
 @Override
 protected Object replaceHookedMethod(MethodHookParam param) 
throws Throwable {
 return "this is imei";
 }
});
XposedHelpers.findAndHookMethod(TelephonyManager.class, 
"getSubscriberId", new XC_MethodReplacement() {
 @Override
 protected Object replaceHookedMethod(MethodHookParam param) 
throws Throwable {
 return "this is imsi";

}
});

相关文章

  • XposedHook实例

    Hook 获取序列号函数 例子 建立一个空工程,编写获取序列号的简单例子 获取手机状态需要设置权限 编写布局文件 ...

  • 关于XposedHook的实践

    前言 Xposed框架(Xposed Framework)是一套开源的、在Android高权限模式下运行的框架服务...

  • SQL C语言基本操作

    相关API 打开 实例 关闭 实例 获取错误消息 操作表 实例创建 实例插入 实例修改 实例删除 实例回调查询 非回调

  • Python-数据类型及其操作方法

    数字类型 代码实例: 字符串类型 代码实例: 列表 代码实例: 元组 代码实例 字典: 代码实例 集合 代码实例:

  • HTML基础-03

    HTML 标题 实例 HTML 段落 实例 HTML 链接 实例 HTML 图像 实例

  • Python 类属性、实例属性、类方法、实例方法

    1、实例属性 实例属性,就是赋给由类创建的实例的属性,实例属性属于它所属的实例,不同实例之间的实例属性可以不同。 ...

  • STL算法之常用拷贝和替换

    copy API 实例 replace API 实例 replace_if API 实例 swap API 实例

  • Vue 基础

    Vue 实例 1. Vue实例 2. 实例属性 3. 实例方法/数据 4. 实例方法/事件 5. 实例方法/生命周...

  • 类中的方法

    1.实例方法的调用方式 实例对象.实例方法() 类对象.实例方法(实例对象) 例如: class Student ...

  • C语言100例

    C 练习实例01C 练习实例02C 练习实例03C 练习实例04C 练习实例05C 练习实例06 C 练习实例07...

网友评论

      本文标题:XposedHook实例

      本文链接:https://www.haomeiwen.com/subject/ospeaftx.html