跳过内容

MASTG-TEST-0051: 测试混淆

此测试即将更新

此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。

Help us out by submitting a PR for: MASTG v1->v2 MASTG-TEST-0051: Testing Obfuscation (android)

发送反馈

概述

静态分析

反编译 APK ( 反编译 Java 代码) 并对其进行审查 ( 审查反编译的 Java 代码) 以确定代码库是否已被混淆。

下面您可以找到一个混淆代码块的示例

package com.a.a.a;

import com.a.a.b.a;
import java.util.List;

class a$b
  extends a
{
  public a$b(List paramList)
  {
    super(paramList);
  }

  public boolean areAllItemsEnabled()
  {
    return true;
  }

  public boolean isEnabled(int paramInt)
  {
    return true;
  }
}

以下是一些注意事项

  • 有意义的标识符,例如类名、方法名和变量名,可能已被丢弃。
  • 二进制文件中的字符串资源和字符串可能已被加密。
  • 与受保护功能相关的代码和数据可能已被加密、打包或以其他方式隐藏。

对于本机代码

Gautam Arvind 在博文 "Android 本机代码的安全强化" 中以及 Eduardo Novella 在 "APKiD:快速识别应用防护产品" 演示文稿中讨论和分析了其中一些技术。

为了进行更详细的评估,您需要详细了解相关威胁和所使用的混淆方法。诸如 APKiD 的工具可能会为您提供有关目标应用所使用的技术(例如混淆器、打包器和反调试措施)的其他指示。

动态分析

您可以使用 APKiD 来检测应用是否已被混淆。

使用 Android UnCrackable L4 的示例

apkid mastg/Crackmes/Android/Level_04/r2pay-v1.0.apk
[+] APKiD 2.1.2 :: from RedNaga :: rednaga.io
[*] mastg/Crackmes/Android/Level_04/r2pay-v1.0.apk!classes.dex
 |-> anti_vm : Build.TAGS check, possible ro.secure check
 |-> compiler : r8
 |-> obfuscator : unreadable field names, unreadable method names

在这种情况下,它检测到该应用具有不可读的字段名称和方法名称等。