Home / Documentation / Architecture

RedBoxVM Architecture

RedBoxVM employs a sophisticated multi-layer architecture designed for maximum security, performance, and compatibility. This guide provides a comprehensive overview of the system's technical design and implementation.

System Architecture Overview

The RedBoxVM architecture consists of multiple interconnected layers, each responsible for specific aspects of the virtualization process:

graph TB subgraph "Host Android System" HS[Host System Services] HK[Host Kernel] HD[Host Hardware] end subgraph "RedBox Virtualization Layer" subgraph "Application Layer" UI[RedBox UI] AM[App Manager] IM[Instance Manager] end subgraph "Core Engine" VL[Virtualization Layer] SH[System Hooks] PM[Process Manager] end subgraph "Native Layer (C++)" DF[Dobby Framework] JB[JNI Bridge] SC[System Call Interceptor] end end subgraph "Virtual Environment 1" VA1[Virtual App 1] VS1[Virtual Services 1] VF1[Virtual File System 1] end subgraph "Virtual Environment 2" VA2[Virtual App 2] VS2[Virtual Services 2] VF2[Virtual File System 2] end subgraph "Virtual Environment N" VAN[Virtual App N] VSN[Virtual Services N] VFN[Virtual File System N] end UI --> AM AM --> IM IM --> VL VL --> SH SH --> PM PM --> DF DF --> JB JB --> SC SC --> HK VL --> VA1 VL --> VA2 VL --> VAN VA1 --> VS1 VA2 --> VS2 VAN --> VSN VS1 --> VF1 VS2 --> VF2 VSN --> VFN HK --> HD HS --> HK

Layer-by-Layer Breakdown

Application Layer

The topmost layer provides the user interface and high-level management functionality:

Design Pattern: The Application Layer follows the MVP (Model-View-Presenter) pattern for clean separation of concerns and testability.

Core Engine

The core virtualization engine responsible for creating and managing virtual environments:

graph LR subgraph "Core Engine Components" VL[Virtualization Layer] SH[System Hooks] PM[Process Manager] VL --> SH SH --> PM PM --> VL end subgraph "Responsibilities" R1[Environment Creation] R2[System Call Interception] R3[Process Isolation] R4[Resource Management] end VL --> R1 SH --> R2 PM --> R3 PM --> R4

Native Layer (C++)

Low-level implementation providing optimal performance and system integration:

Component Purpose Technology
Dobby Framework Function hooking and interception ARM64/ARM32 assembly
JNI Bridge Java-Native communication JNI, C++ STL
System Call Interceptor Kernel-level call interception ptrace, seccomp-bpf

Component Interaction Flow

Understanding how components interact is crucial for debugging and optimization:

sequenceDiagram participant User participant RedBoxUI participant AppManager participant Core participant VirtualEnv participant HostSystem User->>RedBoxUI: Launch RedBox RedBoxUI->>AppManager: Initialize AppManager->>Core: Start Virtualization Engine Core->>HostSystem: Hook System Services User->>RedBoxUI: Select App to Clone RedBoxUI->>AppManager: Create Virtual Instance AppManager->>Core: Allocate Virtual Environment Core->>VirtualEnv: Initialize Sandbox VirtualEnv->>Core: Environment Ready Core->>AppManager: Instance Created AppManager->>RedBoxUI: Update UI User->>RedBoxUI: Launch Virtual App RedBoxUI->>AppManager: Start Instance AppManager->>Core: Execute in Virtual Environment Core->>VirtualEnv: Launch App Process VirtualEnv->>Core: App Running Core->>HostSystem: Manage Resources

Virtualization Process

The app virtualization process follows a carefully orchestrated sequence:

flowchart TD A[User Selects App] --> B{App Already Installed?} B -->|Yes| C[Scan App Components] B -->|No| D[Install App First] D --> C C --> E[Create Virtual Environment] E --> F[Initialize Virtual File System] F --> G[Setup Virtual Services] G --> H[Configure Virtual Network] H --> I[Apply Security Sandbox] I --> J[Register Virtual Instance] J --> K[Virtual App Ready] K --> L[User Launches Virtual App] L --> M[Load in Virtual Environment] M --> N[Hook System Calls] N --> O[Redirect File Operations] O --> P[Virtualize System Services] P --> Q[App Running Isolated] Q --> R{App Requests System Service?} R -->|Yes| S[Intercept Request] S --> T[Route to Virtual Service] T --> U[Process in Sandbox] U --> V[Return Virtual Response] V --> Q R -->|No| W[Continue Normal Execution] W --> Q

System Service Virtualization

RedBoxVM virtualizes Android system services to provide complete isolation:

graph LR subgraph "Virtual App Process" VA[Virtual App] VR[Virtual Runtime] end subgraph "Virtualization Layer" SH[System Hooks] PM[Proxy Manager] VS[Virtual Services] end subgraph "Host System" AS[Activity Manager] PS[Package Manager] CS[Content Resolver] NS[Notification Service] end VA --> VR VR --> SH SH --> PM PM --> VS VS -.->|Filtered| AS VS -.->|Sandboxed| PS VS -.->|Isolated| CS VS -.->|Virtual| NS VS --> |Virtual Response| PM PM --> |Hooked Response| SH SH --> |App Response| VR VR --> |Result| VA

Memory Management

RedBoxVM implements sophisticated memory management to ensure optimal performance:

Memory Isolation

Performance Optimization

File System Virtualization

Each virtual app gets its own isolated file system:

/data/data/com.redbox.vm/
├── virtual_envs/
│   ├── env_1/
│   │   ├── data/
│   │   ├── cache/
│   │   └── files/
│   ├── env_2/
│   │   ├── data/
│   │   ├── cache/
│   │   └── files/
│   └── env_n/
├── shared/
│   ├── libs/
│   └── resources/
└── config/
    ├── hooks.json
    └── policies.json

Network Virtualization

Network traffic is isolated and can be routed through different interfaces:

graph TB subgraph "Virtual Apps" VA1[Virtual App 1] VA2[Virtual App 2] VAN[Virtual App N] end subgraph "Network Virtualization Layer" NV[Network Virtualizer] VPN[VPN Interface] PROXY[Proxy Manager] end subgraph "Host Network" WIFI[WiFi Interface] MOBILE[Mobile Data] ETH[Ethernet] end VA1 --> NV VA2 --> NV VAN --> NV NV --> VPN NV --> PROXY VPN --> WIFI PROXY --> MOBILE NV --> ETH

Performance Characteristics

Metric Native App Virtual App Overhead
Launch Time 1.2s 1.4s +16%
Memory Usage 45MB 52MB +15%
CPU Usage 12% 14% +17%
Battery Impact 100% 108% +8%
Performance Note: RedBoxVM maintains excellent performance with minimal overhead, making it suitable for production use.

Scalability and Limits