# p-saiprasanth/android_testing_research architecture

> Architecture diagram of the GitHub repository p-saiprasanth/android_testing_research, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/p-saiprasanth/android_testing_research
- Repository: https://github.com/p-saiprasanth/android_testing_research

## Overview

This repository is a benchmark dataset, not the implemented analysis framework described in the README. It contains four vulnerable Android applications, each with an APK, manifest, and Java/Smali archives. The README documents a proposed MobSF-to-LLM assessment and evaluation workflow, but no automation, AI-agent, report, or results directories appear in the tree; those stages are shown as documented capabilities, not inspected implementations.

Main entry points: [`AndroGoat`](https://github.com/p-saiprasanth/android_testing_research/tree/main/AndroGoat) (AndroGoat), [`DIVA`](https://github.com/p-saiprasanth/android_testing_research/tree/main/DIVA) (DIVA), [`InjuredAndroid`](https://github.com/p-saiprasanth/android_testing_research/tree/main/InjuredAndroid) (InjuredAndroid), [`InsecureBankv2`](https://github.com/p-saiprasanth/android_testing_research/tree/main/InsecureBankv2) (InsecureBankv2)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_benchmarks["Benchmark apps"]
  node_androgoat["AndroGoat"]
  node_andro_apk["APK<br/>[AndroGoat.apk]"]
  node_andro_manifest["Manifest"]
  node_andro_java["Java archive<br/>[Java_Code.zip]"]
  node_andro_smali["Smali archive<br/>[Smali_Code.zip]"]
  node_diva["DIVA"]
  node_diva_apk["APK<br/>[DIVA.apk]"]
  node_diva_manifest["Manifest"]
  node_diva_java["Java archive<br/>[Java_Code.zip]"]
  node_diva_smali["Smali archive<br/>[Smali_Code.zip]"]
  node_injured["InjuredAndroid"]
  node_injured_apk["APK<br/>[InjuredAndroid.apk]"]
  node_injured_manifest["Manifest"]
  node_injured_java["Java archive<br/>[Java_Code.zip]"]
  node_injured_smali["Smali archive<br/>[Smali_Code.zip]"]
  node_bank["InsecureBankv2"]
  node_bank_apk["APK<br/>[InsecureBankv2.apk]"]
  node_bank_manifest["Manifest"]
  node_bank_java["Java archive<br/>[Java_Code.zip]"]
  node_bank_smali["Smali archive<br/>[Smali_Code.zip]"]
end

subgraph group_analysis["Documented analysis"]
  node_mobsf["MobSF SAST"]
  node_static_findings["Static findings"]
  node_ai_agent["LLM security agent"]
  node_owasp["OWASP classification"]
  node_assessment["Assessment report"]
  node_evaluation["Comparative evaluation"]
end

node_researcher(("Researcher"))

node_researcher -->|"selects benchmark"| node_androgoat
node_researcher -->|"selects benchmark"| node_diva
node_researcher -->|"selects benchmark"| node_injured
node_researcher -->|"selects benchmark"| node_bank
node_androgoat -->|"includes"| node_andro_apk
node_androgoat -->|"includes"| node_andro_manifest
node_androgoat -->|"includes"| node_andro_java
node_androgoat -->|"includes"| node_andro_smali
node_diva -->|"includes"| node_diva_apk
node_diva -->|"includes"| node_diva_manifest
node_diva -->|"includes"| node_diva_java
node_diva -->|"includes"| node_diva_smali
node_injured -->|"includes"| node_injured_apk
node_injured -->|"includes"| node_injured_manifest
node_injured -->|"includes"| node_injured_java
node_injured -->|"includes"| node_injured_smali
node_bank -->|"includes"| node_bank_apk
node_bank -->|"includes"| node_bank_manifest
node_bank -->|"includes"| node_bank_java
node_bank -->|"includes"| node_bank_smali
node_andro_apk -.->|"scanned by"| node_mobsf
node_diva_apk -.->|"scanned by"| node_mobsf
node_injured_apk -.->|"scanned by"| node_mobsf
node_bank_apk -.->|"scanned by"| node_mobsf
node_mobsf -.->|"generates"| node_static_findings
node_andro_manifest -.->|"context for"| node_ai_agent
node_andro_java -.->|"context for"| node_ai_agent
node_andro_smali -.->|"context for"| node_ai_agent
node_diva_manifest -.->|"context for"| node_ai_agent
node_diva_java -.->|"context for"| node_ai_agent
node_diva_smali -.->|"context for"| node_ai_agent
node_injured_manifest -.->|"context for"| node_ai_agent
node_injured_java -.->|"context for"| node_ai_agent
node_injured_smali -.->|"context for"| node_ai_agent
node_bank_manifest -.->|"context for"| node_ai_agent
node_bank_java -.->|"context for"| node_ai_agent
node_bank_smali -.->|"context for"| node_ai_agent
node_ai_agent -.->|"classifies findings"| node_owasp
node_ai_agent -.->|"generates"| node_assessment
node_static_findings -.->|"compared against"| node_evaluation
node_assessment -.->|"compared against"| node_evaluation
node_researcher -.->|"validates results"| node_evaluation

click node_androgoat "https://github.com/p-saiprasanth/android_testing_research/tree/main/AndroGoat"
click node_andro_apk "https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/AndroGoat.apk"
click node_andro_manifest "https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/AndroidManifest.xml"
click node_andro_java "https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/Java_Code.zip"
click node_andro_smali "https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/Smali_Code.zip"
click node_diva "https://github.com/p-saiprasanth/android_testing_research/tree/main/DIVA"
click node_diva_apk "https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/DIVA.apk"
click node_diva_manifest "https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/AndroidManifest.xml"
click node_diva_java "https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/Java_Code.zip"
click node_diva_smali "https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/Smali_Code.zip"
click node_injured "https://github.com/p-saiprasanth/android_testing_research/tree/main/InjuredAndroid"
click node_injured_apk "https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/InjuredAndroid.apk"
click node_injured_manifest "https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/AndroidManifest.xml"
click node_injured_java "https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/Java_Code.zip"
click node_injured_smali "https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/Smali_Code.zip"
click node_bank "https://github.com/p-saiprasanth/android_testing_research/tree/main/InsecureBankv2"
click node_bank_apk "https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/InsecureBankv2.apk"
click node_bank_manifest "https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/AndroidManifest.xml"
click node_bank_java "https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/Java_Code.zip"
click node_bank_smali "https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/Smali_Code.zip"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_androgoat,node_andro_apk,node_andro_manifest,node_andro_java,node_andro_smali,node_diva,node_diva_apk,node_diva_manifest,node_diva_java,node_diva_smali,node_injured,node_injured_apk,node_injured_manifest,node_injured_java,node_injured_smali,node_bank,node_bank_apk,node_bank_manifest,node_bank_java,node_bank_smali toneBlue
class node_mobsf,node_static_findings,node_ai_agent,node_owasp,node_assessment,node_evaluation toneAmber
class node_researcher toneIndigo
```

## Components

### Benchmark apps

- [AndroGoat](https://github.com/p-saiprasanth/android_testing_research/tree/main/AndroGoat): `AndroGoat`
- [APK](https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/AndroGoat.apk): `AndroGoat/AndroGoat.apk`
- [Manifest](https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/AndroidManifest.xml): `AndroGoat/AndroidManifest.xml`
- [Java archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/Java_Code.zip): `AndroGoat/Java_Code.zip`
- [Smali archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/AndroGoat/Smali_Code.zip): `AndroGoat/Smali_Code.zip`
- [DIVA](https://github.com/p-saiprasanth/android_testing_research/tree/main/DIVA): `DIVA`
- [APK](https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/DIVA.apk): `DIVA/DIVA.apk`
- [Manifest](https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/AndroidManifest.xml): `DIVA/AndroidManifest.xml`
- [Java archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/Java_Code.zip): `DIVA/Java_Code.zip`
- [Smali archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/DIVA/Smali_Code.zip): `DIVA/Smali_Code.zip`
- [InjuredAndroid](https://github.com/p-saiprasanth/android_testing_research/tree/main/InjuredAndroid): `InjuredAndroid`
- [APK](https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/InjuredAndroid.apk): `InjuredAndroid/InjuredAndroid.apk`
- [Manifest](https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/AndroidManifest.xml): `InjuredAndroid/AndroidManifest.xml`
- [Java archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/Java_Code.zip): `InjuredAndroid/Java_Code.zip`
- [Smali archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/InjuredAndroid/Smali_Code.zip): `InjuredAndroid/Smali_Code.zip`
- [InsecureBankv2](https://github.com/p-saiprasanth/android_testing_research/tree/main/InsecureBankv2): `InsecureBankv2`
- [APK](https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/InsecureBankv2.apk): `InsecureBankv2/InsecureBankv2.apk`
- [Manifest](https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/AndroidManifest.xml): `InsecureBankv2/AndroidManifest.xml`
- [Java archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/Java_Code.zip): `InsecureBankv2/Java_Code.zip`
- [Smali archive](https://github.com/p-saiprasanth/android_testing_research/blob/main/InsecureBankv2/Smali_Code.zip): `InsecureBankv2/Smali_Code.zip`

### Documented analysis

- **MobSF SAST**
- **Static findings**
- **LLM security agent**
- **OWASP classification**
- **Assessment report**
- **Comparative evaluation**

### Other components

- **Researcher**

## Connections

- Researcher → AndroGoat: selects benchmark
- Researcher → DIVA: selects benchmark
- Researcher → InjuredAndroid: selects benchmark
- Researcher → InsecureBankv2: selects benchmark
- AndroGoat → APK: includes
- AndroGoat → Manifest: includes
- AndroGoat → Java archive: includes
- AndroGoat → Smali archive: includes
- DIVA → APK: includes
- DIVA → Manifest: includes
- DIVA → Java archive: includes
- DIVA → Smali archive: includes
- InjuredAndroid → APK: includes
- InjuredAndroid → Manifest: includes
- InjuredAndroid → Java archive: includes
- InjuredAndroid → Smali archive: includes
- InsecureBankv2 → APK: includes
- InsecureBankv2 → Manifest: includes
- InsecureBankv2 → Java archive: includes
- InsecureBankv2 → Smali archive: includes
- APK → MobSF SAST: scanned by
- APK → MobSF SAST: scanned by
- APK → MobSF SAST: scanned by
- APK → MobSF SAST: scanned by
- MobSF SAST → Static findings: generates
- Manifest → LLM security agent: context for
- Java archive → LLM security agent: context for
- Smali archive → LLM security agent: context for
- Manifest → LLM security agent: context for
- Java archive → LLM security agent: context for
- Smali archive → LLM security agent: context for
- Manifest → LLM security agent: context for
- Java archive → LLM security agent: context for
- Smali archive → LLM security agent: context for
- Manifest → LLM security agent: context for
- Java archive → LLM security agent: context for
- Smali archive → LLM security agent: context for
- LLM security agent → OWASP classification: classifies findings
- LLM security agent → Assessment report: generates
- Static findings → Comparative evaluation: compared against
- Assessment report → Comparative evaluation: compared against
- Researcher → Comparative evaluation: validates results
