Xposed全方位入门教程

  • 0x00 前言
  • 0x01 创建一个靶子App:ButtonApp
  • 0x02 创建Xposed Hook Demo
  • 0x03 hook参数类型是自定义类型的函数
  • 0x04 [待完成]多dex hook
  • 0x05 [待完成]Xposed热更新
  • 0x06 [待完成]Xposed项目创建工具

0x00 前言

主要怕忘记了怎么配置,记录一下折腾过程。每一次逆向Android,想用Xposed hook的时候,总是要查一遍资料重新整理一次,网上的教程也参差不齐,所以写一篇教程方便自己也方便他人。

我的Android Stuidio版本

0x01 创建一个靶子App:ButtonApp

在开始hook之前,我们先创建一个靶子App,就叫他ButtonApp吧(因为只有一个按钮),在界面上画一个Button,并且在MainActivity里写相关Button点击事件,点击Button弹出“我是一个正常的按钮”,代码如下:

创建一个Button
MainActivity截图
ButtonApp运行截图(Hook前)

0x02 创建Xposed Hook Demo

1、创建一个EmptyAcvity

创建一个EmptyAcvity

2、修改AndroidManifest.xml,在Application标签下添加以下代码:

AndroidManifest.xml示例

连上手机调试,编译运行一下,运行成功后,手机端Xposed框架会显示刚刚我们编写的这个模块:

Xposed框架运行界面

3、编辑build.gradle文件:配置jcenter作为代码仓库,再从这个仓库里安装Xposed API,代码如下:

添加完毕后, build.gradle会提示文件已经修改,是否同步。点击 “sync now”,进行同步即可。

build.gradle示例

4、创建HookTest.java文件,编写hook逻辑:

HookTest.java示例

5、创建入口文件:在/app/src/main下创建名为assets的Assets Folder,然后再创建一个名为xposed_init文件,文件内容写上:com.demo.xposeddemo.HookTest

xposed_init示例

6、禁用 Instant Run:

Preferences->Biild,Excution,Deployment->Instant Run配置截图

7、点击运行,确认自己的Xposed打勾之后,重启手机,等待重启完成再打开ButtonApp,点击则会看到提示已经变成“我是一个被劫持的按钮~”,就成功了。

ButtonApp截图(Hook后)

基本的hook教程已经完成了,下面会陆续补充一些其他和Xposed相关的内容。

0x03 hook参数类型是自定义类型的函数

我们先来看一个目标函数,一般经过混淆的apk,经常能看hd这样的变量类型:

public void a(String paramString, Map<String, String> paramMap, hd paramhd)

可以先用classLoader查找hd这个类,查出来之后当参数用,因为这个hd类是没有包名的,所以只写hd,不然要写全限定名才能找到,比如:com.demo.xposeddemo.hd(hd上面的na类也是一样)

hook自定义参数类型的函数

后续内容待补充…

去打赏

觉得文章有用就打赏一下文章作者呗 ლ(╹◡╹ლ)

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

正在跳转到PayPal...

发表评论

Your email address will not be published / Required fields are marked *