Proj. CAR Paper Reading: Statistical Deobfuscation of Android Applications

Abstract

本文:
工具:DEGUARD
任务:reversing layout obfuscation(重命名class, package和method)
具体包括

  1. reverse the layout obfuscation
  2. 预测APKs引用的库
  3. 重命名程序中的一些元素

方法:用大量的non-obfuscated Android applications来学习deobfuscate新的Android APK
步骤:

  1. 将layout obfuscation反混淆表述为structured prediction in a prob graphical model
  2. 使用描述Android Settings的特征和constraints来训练模型,确保准确度和语义准确
  3. 使用推测和学习算法(第三方?)来获取整体精度

实验:

  1. recovers 79.1% of the program element names obfuscated with ProGuard
  2. predicts third-party libraries with accuracy of 91.3%,
  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 的类。

posted @ 2023-06-22 07:52  雪溯  阅读(7)  评论(0编辑  收藏  举报