1.修改AndroidManifest.xml

新建一个app(本次实例中使用包名:com.xposedhooktest2),在AndroidManifest.xml中的application标签内添加xposed相关的meta-data:

第一个meta-data中xposedmodule表示本app将作为xposed的一个模块;第二个meta-data表示xposed最低版本号;第三个meta-data是对该模块的描述

2.添加xposed的jar包

在工程中添加 XposedBridgeApi-54.jar,右键项目–>properties–>Add External JARs

3.新建一个类专门用于hook操作

其中findAndHookMethod函数参数为:

  • 第一个参数为包名.类名;
  • 第二个参数固定为lpparam.classLoader;
  • 第三个参数为方法名(要被hook的函数名);
  • 第四,五…个参数为函数参数(用类型.class表示)
  • 最后一个参数为new XC_MethodHook() {…}

new XC_MethodHook()中有两个十分重要的内部函数:beforeHookedMethod和afterHookedMethod,重写这两个函数可以实现对任意方法的hook,beforeHookedMethod完成执行被hook函数前需要完成的自定义操作,afterHookedMethod完成执行hook函数之后需要完成的自定义操作。

4.指定模块运行入口

在assert目录下新建xposed_init文件,com.xposedhooktest2.HookClass。编译运行,然后在xposed中启用这个模块,重启手机之后即可看见hook效果。

5.效果

本实例hook了微店买家版(V2.2.0)中数据加密函数(com.geili.koudai.util.SafeUtil),函数原型为(经过混淆):

hook效果如下图:

xposedhook

可以看到加密前的json数据。

 

观看更多有关 的文章?

*

    羊角包
    2015年7月30日

    陈老师~在工程里直接加XposedBridgeApi-54.jar就行了吗?还是需要手机安装Xposed 的框架先?
    验证码是什么鬼= = 至于吗。。。

      burningcodes
      2015年7月30日

      肯定要先装xposed的,这个是作为xposed的模块运行的,xposedbridge只是xposed提供的接口。前段时间有大量spam,所以才装的。。

    2015年9月4日

    d对于一些匿名内部类的方法要怎么 hook 呢?

      burningcodes
      2015年9月6日

      用Class.forName试试

+
跳转到评论