首页
社区
课程
招聘
[原创]AS 3.0.1 编写 Xposed 插件入门记录
发表于: 2018-3-27 21:30 15102

[原创]AS 3.0.1 编写 Xposed 插件入门记录

2018-3-27 21:30
15102

最近一直在捯饬 IOT 物联网中智能门锁的研究,因为要逆向安卓方面的APP,而安卓的 APP 很多都是经过加壳处理过,因此脱壳成为了必经之路。xposed 框架是非常流行的安卓下进行 HOOK APP 分析的主流框架。如何基于 Xposed 进行插件开发?参考网络上的资料发现,很多内容包括2017年的资料也存在老旧的情况,经过一系列的参考资料和动手实践之后,可以在最新版的 Android studio 下进行 Xposed demo版本的开发。以下就是大致过程的记录。

windows7 & windows 10
Android studio 3.0.1

小米 MAX2 未root

使用软件是 VirtualXposed,方便未root的手机进行HOOK。

xposed 插件的开发中,经常会使用到NDK进行 .so 模块的编写,所以 NDK 有必要进行下载和配置
下载链接为:
https://dl.google.com/android/repository/android-ndk-r16b-windows-x86_64.zip
win7和win10都是64位系统,32位系统需要使用:
https://dl.google.com/android/repository/android-ndk-r16b-windows-x86.zip
引用页面:
https://developer.android.google.cn/ndk/downloads/index.html
同时也又 Linux 和 MacOS 版本,各下所需即可。
下载完成的ndk解压到D盘并重名为 d:\ndk-bundle\,

添加系统环境变量,path中添加 d:\ndk-bundle\,路径中不要出现空格和中文。

显示如图显示NDK已经安装成功:

Android studio 中"文件"-"项目结构",SDK Location 中配置 NDK的目录:

配置完成之后在项目工程中 "local.properties",可以看到ndk的目录:

新版本的 NDK 不再支持旧版本下的某些使用方式,如果使用旧版本的一些配置,会出现各种各样的报错,google和百度上也很难搜索到正确的答案,
非常的浪费精力,大家看下过程也可以节省时间。
采取的思路是先创建一个包含有 .so 模块的 Android 工程,再行配置为 Xposed 模块,一举两得。
新建一个 android 工程,命名为 HookDemo,需要勾选 include C++ support,这样就可以编写C++代码。

后面的配置中需要支持C++11 标准,原因是某些特定的库需要支持,比如<stdint.h>

与默认配置之间的区别是:

完成之后直接进行编译,成功后可以观察到在工程目录下有 native-lib.so 文件,
安装生成好的APP到手机上,就可以观察到效果:

验证下:

观察工程可以发现工程结构:

MainActivity 中加载并调用so模块中的函数

通过上述的方法之后,可以很快的创建针对so模块的初始化工程,节省很多时间。
相关的代码在cpp目录下,剩下的工作就是配置工程为 Xposed 模块。

https://bintray.com/rovo89/de.robv.android.xposed/api 中下载两个 xposed API,
api-82-sources.jar,api-82.jar,拷贝两个文件到
..\HookDemo\app\libs目录下,在jar文件上右键选择"As a Library",之后选择确定。

..\HookDemo\app\build.gradle 文件可以看到包含进去了两个jar文件。

修改依赖方式 compile files 修改为 provided files, 修改 ..\HookDemo\app\build.gradle 中的 dependencies 选项:
把 implementation 修改为 provided,最终如下:

需要AndroidManifest.xml添加三个 meta-data 属性:

引用自:https://blog.csdn.net/niubitianping/article/details/52571438

..\Code\HookDemo\app\src\main\java\com\xposed\hookdemo目录下新建一个类:HookMain ,代码如下:
新建一个类,然后在 .\assets\xposed_init 中的代码指向了HookMain,就不用直接修改MainActivity 的代码,代码结构会相对应清晰。

xposed_init 文件是 Xposed 模块的入口文件,Xposed 就是通过该文件找到对应的函数入口。
AS工程 app目录下右键,新建-folder-assets:

新建 xposed_init,以文本格式打开,输入指定的 Hook 入口:

完成以上的操作后,生成APK测试一下。把..\HookDemo\app\build\outputs\apk\debug\app-debug.apk上传到手机中

通过virtualXposed 中的 xposed 安装程序,找到HookDemo.apk 并进行安装,成功之后,就会在VirtualXposed 模块页面中显示我们创建的HookDemo模块,

打开一个 xposed中安装的APP后,观察其中的日志,可以看到相关的日志记录。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-2-2 11:28 被admin编辑 ,原因: 图片本地化
上传的附件:
收藏
免费 1
支持
分享
最新回复 (17)
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
2
论坛模版中的图片不支持缩放,所以某些图片有些大了,凑合看吧
2018-3-27 21:36
0
雪    币: 129
活跃值: (2763)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
前排支持下
2018-3-27 21:42
0
雪    币: 2964
活跃值: (2929)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
支持下支持下 
2018-3-28 13:03
0
雪    币: 438
活跃值: (228)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
支持,支持。
2018-3-28 13:13
0
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
6
yunding 
为啥要用VA
2018-3-29 17:47
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
7
Ericky yunding 为啥要用VA
VA  不用Root  ,谁用谁知道~:)
2018-3-30 08:10
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
8
Ericky yunding 为啥要用VA
不需要root是最方便的,话说还是root比较好一点。
2018-3-30 10:29
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
2018-3-30 23:26
0
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
10
仙果 不需要root是最方便的,话说还是root比较好一点。
问题是早不更新了,兼容性不行了,商业版贵,你们就不怕踩坑。
2018-4-12 12:33
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
11
Ericky 问题是早不更新了,兼容性不行了,商业版贵,你们就不怕踩坑。
用的国内的一个版本,是有更新的
2018-4-17 22:08
0
雪    币: 182
活跃值: (214)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了
2018-4-18 11:06
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
支持一下
2018-4-18 16:47
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
14
正好需要    太感谢了      希望可以针对某些软件实战的开发下
2018-4-18 21:01
0
雪    币: 1392
活跃值: (5172)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
15
仙果 用的国内的一个版本,是有更新的
版主新的版本能否发一个?求个下载地址或者链接
2018-4-26 07:38
0
雪    币: 204
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
先入门
2018-5-10 01:27
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
师傅是云鼎的吧
2018-6-4 12:45
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
18
Killshadow 师傅是云鼎的吧[em_41]
不是,我在 兴华永恒
2018-7-9 15:29
0
游客
登录 | 注册 方可回帖
返回
//