转载

Frida加载和启动XServer

Frida加载和启动XServer

本文为看雪论坛优秀文章

看雪论坛作者 ID:Monkeylord

XServer是我常用的通信协议分析工具,是一个Xposed插件,可能有些同学也在用。

然而Xposed的使用空间受限,不但很多应用对其做了检测,去做绕过有时很麻烦,而且Xposed无法在一些特殊的定制安卓系统上使用。

Frida在这些环境下较为方便,但是在工具开发上有难度,因为:

1. Frida的JS脚本里缺少各类支持的库,想要做个HTTP请求都要自己写。

2. Frida对Java方法的Implementation里应该是native状态,不方便进行异步操作。

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

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

效果及XServer功能介绍

XServer启动,长得完全就像是个Frida工具:

Frida加载和启动XServer

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

Frida加载和启动XServer

在图形化界面Hook特定的方法:

Frida加载和启动XServer

跟踪应用内的方法调用:

Frida加载和启动XServer

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

Frida加载和启动XServer

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

Frida加载和启动XServer

Frida加载和启动XServer

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

Frida加载和启动XServer

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

Frida加载和启动XServer

以上,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

ps. 另附操作视频,请点击“阅读原文”下载附件~

Frida加载和启动XServer

看雪ID:Monkeylord

https://bbs.pediy.com/user-776971.htm

*本文由看雪论坛 Monkeylord 原创 ,转载请注明来自看雪社区。

Frida加载和启动XServer

推荐文章++++

* 阿里2015第二届安全挑战赛第三题题解

* VSCode搭建轻量驱动开发环境

* 恶意代码分析之反射型DLL注入

* 使用Frida简单实现函数粒度脱壳

* 从三道题目入门frida

好书推荐 Frida加载和启动XServer

Frida加载和启动XServer

公众号ID:ikanxue

官方微博:看雪安全

商务合作:wsc@kanxue.com

ps. 觉得对你有帮助的话,别忘点 分享 点赞 在看 ,支持看雪哦~

Frida加载和启动XServer

“阅读原文 一起来充电吧!

原文  http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458325606&idx=1&sn=273ddd5f1edd1599ae8aa15afb2c46b3
正文到此结束
Loading...