首页
社区
课程
招聘
[原创]Frida加载和启动XServer
2020-7-7 21:15 14382

[原创]Frida加载和启动XServer

2020-7-7 21:15
14382

背景

XServer是我常用的通信协议分析工具,是一个Xposed插件,可能有些同学也在用。
然而Xposed的使用空间受限,不但很多应用对其做了检测,去做绕过有时很麻烦,而且Xposed无法在一些特殊的定制安卓系统上使用。
Frida在这些环境下较为方便,但是在工具开发上有难度,因为:

  1. Frida的JS脚本里缺少各类支持的库,想要做个HTTP请求都要自己写。
  2. Frida对Java方法的Implementation里应该是native状态,不方便进行异步操作。

当我在使用Frida时,并没有一个现成的既支持实时篡改方法调用,又能很好地处理应用内各类复杂Java对象的工具。

 

所以,作为一个Xposed的遗民,我决定挣扎一下,用Frida加载和驱动XServer,冒充Frida工具,让这个旧时代的Xposed插件焕发新春。

效果及XServer功能介绍

XServer启动,长得完全就像是个Frida工具
图片描述

 

使用XServer查看应用已加载的类

 

图片描述

 

在图形化界面Hook特定的方法
图片描述

 

跟踪应用内的方法调用

 

图片描述

 

点进去还能跟踪调用的堆栈信息

 

图片描述

 

并通过Burp动态拦截应用的方法调用,并实时篡改参数或结果

 

图片描述

 

图片描述

 

并且可以在Burp里重放请求,从而直接调用对应方法(用于通信协议或加解密)
图片描述

 

再就是可以直接读取/修改/Dump内存,这个功能还很简陋
图片描述

 

以上,XServer的功能全部都能用Frida正常实现。

原理

XServer本身是一个Xposed插件,但其实依赖Xposed的地方只是注入目标应用和Hook,大部分功能其实都是Java层面的奇技淫巧。

 

所以我对Hook部分进行了封装,使其既可以被Xposed实现(默认),也可以被其他Hook框架实现(比如Frida),从而使一个Xposed插件可以脱离Xposed Framework工作。

 

然后我用Frida实现了XServer的注入和Hook功能。然后,就正常工作了。这部分实现可以在XServer.js中看到,使用了一些技巧。

 

(实际上,我还用Frida实现了Xposed API,从而可以加载一般的Xposed插件,但还不稳定,所以不拿出来了)

总结

使用Frida的时候,比起JS+Python,JS+Java也有它的优势,比如说Java可以很容易在安卓应用内部玩花活,这对熟悉安卓的人十分友好。

 

用Java编写工具的逻辑,然后用Frida去实现它的底层功能,至少,我这个Xposed遗民觉得,挺香。

 

XServer:https://github.com/monkeylord/XServer
(另附操作视频,见附件)


[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2020-7-7 21:55 被Monkeylord编辑 ,原因: 补充附件
上传的附件:
收藏
点赞7
打赏
分享
最新回复 (14)
雪    币: 222
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
what_fuck 2020-7-7 21:50
2
0
支持楼主,可以不用xp来玩了
雪    币: 5235
活跃值: (3255)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
挤蹭菌衣 1 2020-7-8 11:28
4
0
强大
雪    币: 1013
活跃值: (1397)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
aihacker 2020-7-8 21:38
5
0

不错支持一下

最后于 2020-7-8 22:35 被aihacker编辑 ,原因:
雪    币: 1867
活跃值: (3703)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
virjar 1 2020-7-9 00:27
6
0
都是xp遗民,幸会幸会
雪    币: 3539
活跃值: (911)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
smartdon 1 2020-7-9 09:15
7
0
awesome
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
人在塔在 2020-7-9 09:50
8
0
Mark感谢楼主
雪    币: 239
活跃值: (650)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
只是来打酱油 2020-7-9 10:40
9
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qq6282371 2020-7-15 18:12
10
0
牛啤
看到这个,我是服气的
雪    币: 62
活跃值: (572)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2020-12-3 12:37
11
0
支持一下
雪    币: 143
活跃值: (383)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lvcoffee 2020-12-9 10:40
12
0
厉害,期待楼主的Xposed API
雪    币: 198
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yamidie 2020-12-16 22:09
13
0
支持一个
雪    币: 205
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
CtrlAltDelet 2020-12-18 10:31
14
0
感谢 现在原作者已经支持frida了
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
孤home 2022-2-22 12:49
15
0
大神请问一下能用frida-gadget.so启动这个吗
游客
登录 | 注册 方可回帖
返回