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 开发商广泛使用模糊软件来保护其应用源代码,使其不受对抗性反转工程的努力。 一种特殊的模糊、 绳子模糊、 将源代码中所有字符串文字的内容转换为不可解释的文本, 并插入在运行时解开这些字符串文字的逻辑。 在这项工作中, 我们证明, 字符串模糊很容易被翻转。 我们提供了ASTANA, 这是一种实用工具, 供Android应用从模糊的字符串文学中回收人类可读的内容。 ASTANA对模糊逻辑或应用结构作了最起码的假设。 关键的想法是执行一个特定( 模糊的) 字符串文字的脱钩逻辑, 从而产生原始的字符串价值。 为了获得相关的脱腐化逻辑, 我们根据程序精度技术提出一种轻巧和乐观的算法。 通过对100个流行的实时金融应用软件进行实验性评估, 我们展示了ASTAN应用的实用性, 并验证了我们应用的精确性分析工具。