Proj. CAR Paper Reading: Statistical Deobfuscation of Android Applications
Abstract
本文:
工具:DEGUARD
任务:reversing layout obfuscation(重命名class, package和method)
具体包括
- reverse the layout obfuscation
- 预测APKs引用的库
- 重命名程序中的一些元素
方法:用大量的non-obfuscated Android applications来学习deobfuscate新的Android APK
步骤:
- 将layout obfuscation反混淆表述为structured prediction in a prob graphical model
- 使用描述Android Settings的特征和constraints来训练模型,确保准确度和语义准确
- 使用推测和学习算法(第三方?)来获取整体精度
实验:
- recovers 79.1% of the program element names obfuscated with ProGuard
- predicts third-party libraries with accuracy of 91.3%,
- reveals string decoders and classes that handle sensitive data in Android malware.
2 Overview
2.2 DeGuard
给定一个 Android APK,DeGuard 自动派生一组约束,限制分配给未知程序元素的可能名称。 这些命名约束保证 DeGuard 生成的反混淆 APK 是:(i) 语法良好的程序,以及 (ii) 语义上与输入 APK 等效。 两个示例约束是:在同一类中声明的所有字段必须具有不同的名称,并且属于同一包的所有类必须具有不同的名称。 任何格式良好的应用程序都必须满足这两个语法属性。 由于方法重写,方法的命名约束更加复杂。 例如,如果子类中的方法覆盖超类(在输入 APK 中)中的方法,则这两个方法在反混淆后必须具有相同的名称,以保留覆盖属性。 例如,假设类 a 的包中还包含一个(未混淆的)名称为 MainActivity 的类。