Skip to content
A Xposed Module for Android Penetration Test, with NanoHttpd.
JavaScript Java HTML
Branch: master
Clone or download
Monkeylord
Monkeylord 注册boolean的处理器器
register boolean parser
Latest commit f4c0854 Oct 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea
app 注册boolean的处理器器 Oct 15, 2019
gradle/wrapper 参考了Inspeckage的实现,但是做得比它更优雅。 Mar 29, 2019
.gitignore First Commit Aug 13, 2018
LICENSE Initial commit Oct 20, 2018
README.md 更新了批量跟踪功能,支持正则表达式和实时调整被Hook方法。 Jul 24, 2019
build.gradle First Commit Aug 13, 2018
gradle.properties First Commit Aug 13, 2018
gradlew
gradlew.bat First Commit Aug 13, 2018
settings.gradle First Commit Aug 13, 2018

README.md

XServer

A Xposed Module for Android Penetration Test, with NanoHttpd.

背景

渗透测试中经常遇到通信协议的分析或者各类混淆。

此时,若通过静态的代码分析,则定位关键函数时耗时往往很久。此时,直接根据运行时的参数、结果特征直接定位到关键函数,往往能够节省很多时间。

此外,逆向通信协议往往比较麻烦,尤其是测试目的是通信内容而非协议本身时,此时,若不去逆向协议本身,而是直接使用应用内现成的协议,也会省去大量时间。

XServer

XServer是一个用于对方法进行分析的Xposed插件,它针对的是“方法”接口。由于人类习惯函数式编程,为了可维护性,往往会把各个功能分别封装进各个类与方法,这成为了程序的弱点。

利用注入和反射,可以记录并拦截方法的调用,也可以在应用自身的运行环境中调用某个具体方法。这就可以对应用的分析起到辅助。

另外,XServer还通过HTTP和WebSocket提供远程动态操作界面,也提供RPC接口供其它工具调用应用内的方法。

XServer基础结构

架构

XServer架构包含两个部分:Xposed、WebServer

Xposed启动WebServer并提供方法注入能力,WebServer负责界面、RPC及各类业务逻辑。

组件结构

Xposed入口:XposedEntry

应用选择器:MainActivity

WebServer:XServer

业务逻辑处理:handler

对外接口:api

其它功能组件:utils、objectparser

资源文件:各类freemarker页面(XServer用freemarker作为模板引擎)

WebServer

基于NanoHTTPD和NanoWSD开发,实现HTTP路由表与WebSocket路由表,并整合freemarker作为模板引擎。

定义了两类API接口,HTTP API和WebSocket API(Operation、wsOperation),启动后加载的各类功能API都要在此注册。

模板引擎则很简洁,在assets目录中编写模板,然后XServer.render(data,templete)即可。

API组件

Viewer

包含三个API:MethodView、ClassView和wsMethodView

提供对类和方法的浏览,用来了解和查看应用的结构。

wsMethodView提供对方法调用与返回的实时监控,同时将被监控的方法变为远程调用。

Tracer

包含两个API:Tracer和wsTracer

提供对应用执行流的方法粒度跟踪,批量监控并记录方法调用与返回。

Invoker

包含两个API:Invoke和ObjManager

提供并完成对应用内方法的远程调用,也管理保存的对象实例。

Injector

API:TODO

提供动态注入SO,APK的能力,用于启动frida-gadget或动态启动其它Xposed插件。

Handler组件

处理反射

包含ClassHandler、MethodHandler

用于通过反射获取各种类与方法的对象,提取和处理其中信息。

处理注入

包含两个handler:HookHandler、ObjectHandler

用于管理各类Hook,收集和管理各类对象实例。

目前重构中,似乎并不需要自己来管理注入,交给Xposed就行。

TODO:处理拦截

深度操作

目前包含MemoryHandler

提供内存操作,利用内部类Libcore实现,没有使用SO。

可以用于Dump内存寻找Demo,也可以动态修改内存。

TODO:提供SO和APK加载

TODO:提供C层Hook,利用SO实现,或许可以使用substrate,或许可以现场gcc?

TODO:集成一些比较有用的Hook

You can’t perform that action at this time.