Skip to content

Latest commit

 

History

History
114 lines (82 loc) · 4.39 KB

README.md

File metadata and controls

114 lines (82 loc) · 4.39 KB

Xposed Api

Xposed 源码地址

以下hook目标app源码

  • Hook 案例toastMessage方法

    $ hook指定目标函数加载 前/后以及执行顺序

    $ 参数/返回值打印

    $ 参数/返回值替换

    $ 调用栈打印

    $ 通过param.thisObject 来获取实例

    $ 获取类的两种方法:

       1. XposedHelpers.findClass
       2. loadPackageParam.classLoader.loadClass(className)   
    
  • Hook XposedBridge hookAllMethods方法

    $ 使用hookAllMethods Hook住指定方法

    $ 通过hook类的实例方法获得类的实例

    $ 主动调用动态方法

  • Hook 带壳App
    xpose 不能直接hook到带壳app下的类。

    $ Hook壳原理

    $ Hook到目标类

  • Hook 构造方法

    $ Hook构造方法并挂钩

    $ 获取实例

    $ 返回给定对象实例中对象字段的值

  • 复现XposedHelpers中某些方法

    $ callMethod

    $ getObjectField

    $ getStaticIntField

  • 复现loadPackageParam的属性

    $ 过滤系统版本

    $ 打印进程名

    $ 打印包名

    $ 获取ClassLoader,用于查找包名等。

  • Hook 多dex apk

    $ hook 多dex问题

    $ findAndHookMethod可以指定参数类型指定hook特定的重载方法

  • 主动调用内存爆破

    $ XposedHelpers.callStaticMethod 主动调用

    $ 反射主动调用

    $ context构造

  • NanoHttpd 算法主动暴露

    $ 使用http服务暴露算法

  • 获取实例的三种方式

    $ Hook一个实例方法来获取实例

    $ 获取构造方法来获取实例

    还可以findConstructorExact获得构造函数,然后.newInstance() 获取实例 mNotificationLightConstructor = XposedHelpers.findConstructorExact(CLASS_NOTIFICATION_RECORD+".Light", mContext.getClassLoader(),int.class, int.class, int.class); return mNotificationLightConstructor.newInstance(color, onMs, offMs);

    $ xposed.newInstance(clazz) 获取实例

  • 为什么HookMessage类在 com.example.xposed1包下,查看包下面所有的类却没有HookMessage?

    因为 HookMessage implements IXposedHookLoadPackage, 此类实现了接口,所以搜索不到,他不属于原本的包。

  • 查找 HookMessage 为什么会出现两个?

    HookMessage下的XC_MethodHook 就是 HookMessage$1 ,他是匿名的内部类,它有 beforeHookedMethod和 afterHookedMethod 两个方法,如果想hook XC_MethodHook 函数,那么就需要hook HookMessage$1, 假如一个类有多个hook 方法比如多个XC_MethodHook ,那么就具有多个HookMessage内部类,比如HookMessage$1、HookMessage$2等。

  • 如何定位className、XC_MethodHook 是属于哪个进程的内部类。

    if (loadPackageParam.packageName.equals("com.example.xposed1")) {
    查看进程名等于谁,就可以找到。hook 的包名为com.example.xposed1

  • 构造函数解释

    java初始化设置属性的时候,是用构造函数来设置的。new DemoHelper("123") 给类传参数。 XposedHelpers.findConstructorExact(CLASS_SHOW_STACK_ACTION_BUTTON_EVENT, cl, boolean.class).newInstance(true));