【移动安全基础篇】——08、Android_Hook_xposed

1. Xposed
  开源,官网地址 http://repo.xposed.info/
2. Xposed_Demo
步骤如下:
(1)导入 lib 文件 XposedBridgeApi-54.jar,在 build.gradle 文件中设置为 provided模式,使其不参与编译到最终文件中
(2)AndroidManifest.xml 文件修改

(3)入口类编写
新建一个类文件

(4)设置启动入口
在 assets 文件夹中,新建一个 xposed_init 文件,然后写进入口类的信息,例如example.xposed.XposedMain

(5)安装激活插件,重启后可看到插件效果

Xposed 是在程序启动的时候同时加载,因此它的函数钩子是区分进程的。如果想对特定进程下钩子的话可以很方便地使用Xposed。在挂钩函数方面没有 Cydia 那样容易写,但是有一个优点是,对于程序的类和参数,可以通过名字进行下钩子。例如,对应 String 类,类名是 java.lang.String,那么传递的参数可以是”java.lang.String”,与传递String.class 的效果是一样的。
Xposed 的 Hook 分为函数执行前和函数执行后两个位置,可以分别进行参数修改和结果修改。如果不想进行调用的话,可以在执行前使用 setResult(NULL)函数。
3. classLoader
与 java 上类似,classLoader 就是一个类装载器。与 java 不同的是,classLoader 所加载的是 dex 文件本身。所以通过程序的 classLoader,可以获取程序 dex 文件中定义的所有类和其成员函数。同理,如果一个程序有多个 dex,那么会对应多个 classLoader,特别是使用动态加载的dex,则需要传递想要的classLoader才可以进行数据获取,这点需要注意。

总会有不期而遇的温暖. 和生生不息的希望。
原文地址:https://www.cnblogs.com/devi1/p/13486475.html