Skip to content

Latest commit

 

History

History
25 lines (19 loc) · 1.87 KB

hook-rpc.md

File metadata and controls

25 lines (19 loc) · 1.87 KB

大致原理思路

安卓中抓取方式除了全协议技术和自动化配合hook之外,还有一种难度和实现原理均介于两者之间的RPC方式,即通过注入一段代码至目标APP中来将目标API暴露供外调用,例如通过Xposed插件在对方APP中启动一个HTTP服务,然后预先定义好Http接口的请求参数,在Http服务响应对应的接口时通过反射执行对方APP中的方法来获取结果并返回,如此一来对外部Http调用放来说,仿佛目标APP对外开放了一个Http接口。

上述例子是简单的通过一个Http服务来完成暴露,但实际上并不限于基于HTTP协议完成,也可以通过自定义长链接完成,其次通过Http服务实际上只能供一个局域网中访问,对于公网服务来说无法突破NAT限制。

无论怎样,核心都是注入和服务暴露,具体注入的方式和服务暴露方式都有多种方式,例如注入可以通过Hook或者重打包或者VA,服务暴露有HTTP、TCP长链接(自定义协议、Netty)等。

Sekiro

Sekiro是维佳哥写的一个成熟的RPC暴露框架,前身是hermes,基于Netty实现了内网穿透和通信协议自定义,可以与一切Hook框架配合,可以运用于安卓和JS。

关于Sekiro的架构解析可以参考GITHUB解析:

食用手册:

适用场景

由于RPC的方式可以直接调用对方方法API,因此可以简化省略一些逆向工作,例如:

  • 黑盒算法直接调用
  • 半协议抓取(优点:少数设备&同步调用返回)
  • 安卓群控

但RPC方式也存在一些缺点,例如:

  • 相比于全协议仍然需要设备部署和维护,调用链路长
  • 算法如果绑定本地环境或者设备指纹,可能会暴露抓取特征