# zalexdev/strykerapp architecture

> Architecture diagram of the GitHub repository zalexdev/strykerapp, 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/zalexdev/strykerapp
- Repository: https://github.com/zalexdev/strykerapp

## Overview

StrykerOSS is an Android penetration-testing suite that presents security tools through a unified UI and runs heavyweight tools in a Debian chroot or, where supported, a rootless QEMU guest. The main user flow is onboarding and engine selection, then choosing a dashboard/module action and viewing or exporting its result. The graph preserves the README’s major security, USB, and desktop capabilities. Several module links reflect README descriptions rather than inspected call sites; sampled service excerpts confirm rootless execution for Nuclei and installation work, but do not establish every module’s wiring.

Main entry points: [`app/src/main/java/com/zalexdev/stryker/MainActivity.java`](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/MainActivity.java) (Main navigation), [`app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java`](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java) (Runtime engine), [`app/src/main/java/com/zalexdev/stryker/appintro/AppIntroActivity.java`](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/appintro/AppIntroActivity.java) (Setup wizard), [`app/src/main/java/com/zalexdev/stryker/vnc/VNCService.java`](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/vnc/VNCService.java) (VNC desktop)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App workflow"]
  node_main["Main navigation<br/>[MainActivity.java]"]
  node_dashboard["Dashboard<br/>[Dashboard.java]"]
  node_onboarding["Setup wizard"]
  node_installer["Tool installer"]
end

subgraph group_runtime["Runtime environment"]
  node_core["Core services<br/>[Core.java]"]
  node_engine["Runtime engine"]
  node_terminal["Built-in terminal<br/>[NeoTermService.kt]"]
  node_coremanager["Core manager<br/>[CoreManager.java]"]
end

subgraph group_network["Network security"]
  node_wifi["WiFi tools<br/>[Wifi.java]"]
  node_handshakes["Handshake library"]
  node_localnet["LAN discovery<br/>[LocalMain.java]"]
  node_nmap["Nmap scanner<br/>[NmapScanner.java]"]
  node_nuclei["Web scanner"]
end

subgraph group_attacks["Exploit tools"]
  node_arsenal["Exploit arsenal"]
  node_metasploit["Metasploit<br/>[Metasploit.java]"]
  node_hydra["Hydra engine<br/>[HydraEngine.java]"]
  node_searchsploit["SearchSploit"]
  node_wpair["WhisperPair<br/>[WpairFragment.java]"]
end

subgraph group_device["Device capabilities"]
  node_hid["HID attacks<br/>[HidFragment.java]"]
  node_usb["USB Arsenal"]
  node_netdetect["USB adapter detection<br/>[NetDetector.java]"]
  node_geomac["GeoMac mapping<br/>[GeoMac.java]"]
  node_mac["MAC changer"]
  node_vnc["VNC desktop<br/>[VNCService.java]"]
end

node_user(("Android user"))

node_user -->|"opens app"| node_main
node_main -->|"shows home"| node_dashboard
node_main -->|"starts setup"| node_onboarding
node_onboarding -->|"starts installation"| node_installer
node_onboarding -->|"selects engine"| node_engine
node_dashboard -->|"opens management"| node_coremanager
node_main -->|"opens terminal"| node_terminal
node_installer -->|"runs guest commands"| node_engine
node_terminal -.->|"enters guest"| node_engine
node_main -->|"opens tools"| node_wifi
node_main -->|"opens storage"| node_handshakes
node_main -->|"opens scanner"| node_localnet
node_main -->|"opens scanner"| node_nmap
node_main -->|"starts scans"| node_nuclei
node_nuclei -.->|"runs guest scan"| node_engine
node_main -->|"opens arsenal"| node_arsenal
node_main -->|"opens console"| node_metasploit
node_main -->|"opens tool"| node_hydra
node_main -->|"opens browser"| node_searchsploit
node_main -->|"opens scanner"| node_wpair
node_main -->|"opens HID tools"| node_hid
node_main -->|"opens profiles"| node_usb
node_main -->|"opens detection"| node_netdetect
node_main -->|"opens map"| node_geomac
node_main -->|"opens changer"| node_mac
node_main -->|"starts desktop"| node_vnc
node_vnc -->|"runs chroot command"| node_core
node_vnc -.->|"forwards guest port"| node_engine

click node_main "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/MainActivity.java"
click node_dashboard "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/dashboard/Dashboard.java"
click node_onboarding "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/appintro/AppIntroActivity.java"
click node_installer "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/install/InstallService.java"
click node_core "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/utils/Core.java"
click node_engine "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java"
click node_terminal "https://github.com/zalexdev/strykerapp/blob/main/terminal/src/main/java/com/stryker/terminal/services/NeoTermService.kt"
click node_coremanager "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/coremanger/CoreManager.java"
click node_wifi "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/wifi/Wifi.java"
click node_handshakes "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/handshakes/HandshakeStorage.java"
click node_localnet "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/localnetwork/LocalMain.java"
click node_nmap "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/nmap/NmapScanner.java"
click node_nuclei "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/nuclei/NucleiScanService.java"
click node_arsenal "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/arsenal/ArsenalFragment.java"
click node_metasploit "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/metasploit/Metasploit.java"
click node_hydra "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/hydra/HydraEngine.java"
click node_searchsploit "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/searchsploit/ExploitWebview.java"
click node_wpair "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/wpair/WpairFragment.java"
click node_hid "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/hid/ui/HidFragment.java"
click node_usb "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/usbarsenal/ui/UsbArsenalFragment.java"
click node_netdetect "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/netdetect/NetDetector.java"
click node_geomac "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/geomac/GeoMac.java"
click node_mac "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/macchanger/MACChangerFragment.java"
click node_vnc "https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/vnc/VNCService.java"

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_main,node_dashboard,node_onboarding,node_installer,node_user toneBlue
class node_core,node_engine,node_terminal,node_coremanager toneAmber
class node_wifi,node_handshakes,node_localnet,node_nmap,node_nuclei toneMint
class node_arsenal,node_metasploit,node_hydra,node_searchsploit,node_wpair toneRose
class node_hid,node_usb,node_netdetect,node_geomac,node_mac,node_vnc toneIndigo
```

## Components

### App workflow

- [Main navigation](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/MainActivity.java): `app/src/main/java/com/zalexdev/stryker/MainActivity.java`
- [Dashboard](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/dashboard/Dashboard.java): `app/src/main/java/com/zalexdev/stryker/dashboard/Dashboard.java`
- [Setup wizard](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/appintro/AppIntroActivity.java): `app/src/main/java/com/zalexdev/stryker/appintro/AppIntroActivity.java`
- [Tool installer](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/install/InstallService.java): `app/src/main/java/com/zalexdev/stryker/install/InstallService.java`

### Runtime environment

- [Core services](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/utils/Core.java): `app/src/main/java/com/zalexdev/stryker/utils/Core.java`
- [Runtime engine](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java): `app/src/main/java/com/zalexdev/stryker/engine/RootlessEngine.java`
- [Built-in terminal](https://github.com/zalexdev/strykerapp/blob/main/terminal/src/main/java/com/stryker/terminal/services/NeoTermService.kt): `terminal/src/main/java/com/stryker/terminal/services/NeoTermService.kt`
- [Core manager](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/coremanger/CoreManager.java): `app/src/main/java/com/zalexdev/stryker/coremanger/CoreManager.java`

### Network security

- [WiFi tools](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/wifi/Wifi.java): `app/src/main/java/com/zalexdev/stryker/wifi/Wifi.java`
- [Handshake library](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/handshakes/HandshakeStorage.java): `app/src/main/java/com/zalexdev/stryker/handshakes/HandshakeStorage.java`
- [LAN discovery](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/localnetwork/LocalMain.java): `app/src/main/java/com/zalexdev/stryker/localnetwork/LocalMain.java`
- [Nmap scanner](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/nmap/NmapScanner.java): `app/src/main/java/com/zalexdev/stryker/nmap/NmapScanner.java`
- [Web scanner](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/nuclei/NucleiScanService.java): `app/src/main/java/com/zalexdev/stryker/nuclei/NucleiScanService.java`

### Exploit tools

- [Exploit arsenal](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/arsenal/ArsenalFragment.java): `app/src/main/java/com/zalexdev/stryker/arsenal/ArsenalFragment.java`
- [Metasploit](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/metasploit/Metasploit.java): `app/src/main/java/com/zalexdev/stryker/metasploit/Metasploit.java`
- [Hydra engine](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/hydra/HydraEngine.java): `app/src/main/java/com/zalexdev/stryker/hydra/HydraEngine.java`
- [SearchSploit](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/searchsploit/ExploitWebview.java): `app/src/main/java/com/zalexdev/stryker/searchsploit/ExploitWebview.java`
- [WhisperPair](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/wpair/WpairFragment.java): `app/src/main/java/com/zalexdev/stryker/wpair/WpairFragment.java`

### Device capabilities

- [HID attacks](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/hid/ui/HidFragment.java): `app/src/main/java/com/zalexdev/stryker/hid/ui/HidFragment.java`
- [USB Arsenal](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/usbarsenal/ui/UsbArsenalFragment.java): `app/src/main/java/com/zalexdev/stryker/usbarsenal/ui/UsbArsenalFragment.java`
- [USB adapter detection](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/netdetect/NetDetector.java): `app/src/main/java/com/zalexdev/stryker/netdetect/NetDetector.java`
- [GeoMac mapping](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/geomac/GeoMac.java): `app/src/main/java/com/zalexdev/stryker/geomac/GeoMac.java`
- [MAC changer](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/macchanger/MACChangerFragment.java): `app/src/main/java/com/zalexdev/stryker/macchanger/MACChangerFragment.java`
- [VNC desktop](https://github.com/zalexdev/strykerapp/blob/main/app/src/main/java/com/zalexdev/stryker/vnc/VNCService.java): `app/src/main/java/com/zalexdev/stryker/vnc/VNCService.java`

### Other components

- **Android user**

## Connections

- Android user → Main navigation: opens app
- Main navigation → Dashboard: shows home
- Main navigation → Setup wizard: starts setup
- Setup wizard → Tool installer: starts installation
- Setup wizard → Runtime engine: selects engine
- Dashboard → Core manager: opens management
- Main navigation → Built-in terminal: opens terminal
- Tool installer → Runtime engine: runs guest commands
- Built-in terminal → Runtime engine: enters guest
- Main navigation → WiFi tools: opens tools
- Main navigation → Handshake library: opens storage
- Main navigation → LAN discovery: opens scanner
- Main navigation → Nmap scanner: opens scanner
- Main navigation → Web scanner: starts scans
- Web scanner → Runtime engine: runs guest scan
- Main navigation → Exploit arsenal: opens arsenal
- Main navigation → Metasploit: opens console
- Main navigation → Hydra engine: opens tool
- Main navigation → SearchSploit: opens browser
- Main navigation → WhisperPair: opens scanner
- Main navigation → HID attacks: opens HID tools
- Main navigation → USB Arsenal: opens profiles
- Main navigation → USB adapter detection: opens detection
- Main navigation → GeoMac mapping: opens map
- Main navigation → MAC changer: opens changer
- Main navigation → VNC desktop: starts desktop
- VNC desktop → Core services: runs chroot command
- VNC desktop → Runtime engine: forwards guest port
