Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

GUITAR: Piecing Together Android App GUIs From Memory Images

论文下载:http://www.cs.wm.edu/~ksun/csci680-f15/papers/GUITAR_CCS_15.pdf

Abstract

利用内存恢复GUI,GUITAR是一个Android模拟器的插件,输入是手机内存中提取的界面元素,会在模拟器的屏幕重构出界面。

Background

首先按照每个像素点来恢复的策略不行,因为内存中不会长久保存这些像素点,一旦界面改变,就会被替代。 主要思路是利用内存中的GUI tree 来重画界面。每个APP的heap中都会存一个GUI TREE。GUI TREE的每个节点都是一系列draw options。

Fig

Reconstructing GUI Tree Topology

首先扫一遍内存,找到所有GUI元素:draw ops, Tree nodes, graphical content elements. 当APP进入后台后,tree的主要的一些指针会被清空,因此拿不到完整的TREE,需要自己来连接。 内存中有些JAVA objects,虽然不能直接用来重画界面,但是会包含TREE中结构的信息。利用这些信息可以将树重新连接。 这里用到深度优先算法。

Fig

Remapping Drawing Operations

之前一步理清了整个界面的布局结构,这一步要把实际界面的draw ops与每个布局进行连接。

Fig

Runtime Recreation for GUI Redraw

GUI Data Elements:

Fig

Reconstructed GUIs

Fig

Fig

GUI Reconstruction Over Time

Fig

Fig