[论文解读] ASTANA: Practical String Deobfuscation for Android Applications Using Program Slicing
ASTANA 是一款针对 Android 应用程序的实用字符串去混淆工具,利用轻量级、乐观的程序切片技术提取并执行去混淆逻辑,无需事先了解混淆技术即可恢复原始字符串字面量。在 100 个真实世界的金融类应用上进行评估,即使在复杂的控制流混淆下也能成功去混淆字符串。
Software obfuscation is widely used by Android developers to protect the source code of their applications against adversarial reverse-engineering efforts. A specific type of obfuscation, string obfuscation, transforms the content of all string literals in the source code to non-interpretable text and inserts logic to deobfuscate these string literals at runtime. In this work, we demonstrate that string obfuscation is easily reversible. We present ASTANA, a practical tool for Android applications to recovers the human-readable content from obfuscated string literals. ASTANA makes minimal assumptions about the obfuscation logic or application structure. The key idea is to execute the deobfuscation logic for a specific (obfuscated) string literal, which yields the original string value. To obtain the relevant deobfuscation logic, we present a lightweight and optimistic algorithm, based on program slicing techniques. By an experimental evaluation with 100 popular real-world financial applications, we demonstrate the practicality of ASTANA. We verify the correctness of our deobfuscation tool and provide insights in the behaviour of string obfuscators applied by the developers of the evaluated Android applications.
研究动机与目标
- 为应对 Android 应用中日益增长的逆向工程威胁,特别是恶意软件和专有开发者使用的字符串混淆技术。
- 克服现有去混淆工具在控制流混淆下失效或需要详细了解混淆器的局限性。
- 开发一种通用、轻量级且实用的去混淆解决方案,适用于多种 Android 应用,且无需对混淆逻辑事先做出假设。
- 证明即使在存在复杂控制流变换的情况下,也可通过静态分析和程序切片实现字符串去混淆,具有可行性。
提出的方法
- ASTANA 通过检测字符串混淆的典型模式(如非人类可读字符串后跟随解密调用)来识别混淆的字符串字面量。
- 应用一种轻量级、乐观的向后程序切片算法,提取所有影响特定字符串字面量去混淆的语句。
- 切片过程聚焦于从混淆字符串到最终解密输出的数据依赖关系,从而提取出最小且可执行的代码片段。
- 在受控环境中执行提取的去混淆逻辑,以获取原始的人类可读字符串值。
- 该方法通过关注数据流而非控制流结构,对控制流混淆具有鲁棒性。
- ASTANA 使用静态分析生成切片,无需动态执行或运行时插桩。
实验结果
研究问题
- RQ1即使控制流被大量修改,是否可以使用静态分析和程序切片有效逆转 Android 应用中的字符串混淆?
- RQ2轻量级、乐观的程序切片方法在从混淆的 Android 应用中提取可执行去混淆逻辑方面的有效性如何?
- RQ3ASTANA 在不了解混淆技术的前提下,能在多大程度上对真实世界 Android 应用中的字符串进行去混淆?
- RQ4与依赖启发式方法或动态分析的现有去混淆工具相比,ASTANA 在准确性和鲁棒性方面表现如何?
主要发现
- ASTANA 在 100 个真实世界的金融类 Android 应用中成功去混淆了字符串字面量,证明了其在真实场景中的实用性。
- 该工具实现了高去混淆准确率,即使在应用了控制流混淆的情况下也能恢复原始字符串,而这类混淆会破坏许多现有工具。
- 轻量级、乐观的切片算法实现了高效去混淆逻辑的提取,且无需构建完整的程序依赖图。
- 该方法在多种混淆模式下表现出鲁棒性,包括商业工具(如 ProGuard 和 Allatori)所使用的混淆方式。
- 评估结果证实,字符串混淆在极少假设下即可被轻易逆转,挑战了其能提供强保护的假设。
- ASTANA 的静态分析方法避免了运行时执行需求,使其比动态替代方案更具可扩展性和实用性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。