# ispointer/repairip architecture

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

- Interactive diagram: https://gitdiagram.com/ispointer/repairip
- Repository: https://github.com/ispointer/repairip

## Overview

RePairip is a command-line Android protection-removal and APK repacking tool. Its main workflow takes an APK, patches protected DEX and manifest content, writes a repacked APK, and can correct DEX CRCs; optional translation and root-device installation extend that workflow. A separate package mode performs native-library surgery, with ELF parsing and patching as its core. The README also advertises VMRunner snapshot dumping. The sampled sources show only parts of the main orchestration and native patching, so uncertain internal links are omitted.

Main entry points: [`antik/src/main/java/com/antik/Main.java`](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/Main.java) (Main workflow), [`antik/src/main/java/com/antik/librarySurgery/LibSurgery.java`](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibSurgery.java) (Library surgery), [`antik/src/main/java/com/antik/DexPatcher/DexPatcher.java`](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/DexPatcher/DexPatcher.java) (DEX patcher), [`antik/src/main/java/com/antik/crc32/crc32.java`](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/crc32/crc32.java) (DEX CRC patch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI workflow"]
  node_main["Main workflow<br/>[Main.java]"]
  node_help["Help output<br/>[help.java]"]
end

subgraph group_apk["APK transformation"]
  node_dex["DEX patcher<br/>[DexPatcher.java]"]
  node_dexmethods["DEX method patches"]
  node_manifest["Manifest patcher<br/>[manifestP.java]"]
  node_repack["APK repacking<br/>[loading.java]"]
  node_crc["DEX CRC patch<br/>[crc32.java]"]
  node_translate["Translation patch"]
  node_vmrunner["Snapshot dumping"]
end

subgraph group_native["Native surgery"]
  node_libsurgery["Library surgery<br/>[LibSurgery.java]"]
  node_extract["Library extraction"]
  node_libpatch["Library patching"]
  node_elf["ELF parsing<br/>[Elf.java]"]
  node_memory["Process memory<br/>[Memory.java]"]
end

subgraph group_device["Root operations"]
  node_install["Package install<br/>[Installer.java]"]
  node_uninstall["Package removal<br/>[uninstaller.java]"]
  node_pull["Device pull<br/>[Pull.java]"]
  node_base["Base replacement<br/>[Base.java]"]
  node_launch["App launch<br/>[launchApp.java]"]
end

subgraph group_support["Shared utilities"]
  node_crcformat["ZIP CRC parsing"]
end

node_user(("CLI user"))
node_device(("Android device"))

node_user -->|"runs"| node_main
node_main -->|"requests help"| node_help
node_main -->|"patches DEX"| node_dex
node_main -->|"patches manifest"| node_manifest
node_main -->|"writes APK"| node_repack
node_main -->|"patches CRC"| node_crc
node_main -->|"patches translation"| node_translate
node_main -->|"dispatches package mode"| node_libsurgery
node_main -->|"removes package"| node_uninstall
node_main -->|"installs APK"| node_install
node_main -->|"pulls files"| node_pull
node_main -->|"replaces base"| node_base
node_main -->|"launches app"| node_launch
node_dex -->|"uses patches"| node_dexmethods
node_crc -->|"reads ZIP fields"| node_crcformat
node_libsurgery -->|"extracts libraries"| node_extract
node_libsurgery -->|"patches libraries"| node_libpatch
node_libpatch -->|"parses ELF"| node_elf
node_libsurgery -.->|"uses memory"| node_memory
node_main -.->|"dumps snapshots"| node_vmrunner
node_install -->|"installs on"| node_device
node_uninstall -->|"removes from"| node_device
node_pull -->|"reads from"| node_device
node_base -->|"replaces on"| node_device
node_launch -->|"starts on"| node_device

click node_main "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/Main.java"
click node_help "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/ui/help.java"
click node_dex "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/DexPatcher/DexPatcher.java"
click node_dexmethods "https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/DexPatcher/MethodT"
click node_manifest "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/manifest/manifestP.java"
click node_repack "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/utils/loading.java"
click node_crc "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/crc32/crc32.java"
click node_translate "https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/DexPatcher"
click node_vmrunner "https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik"
click node_libsurgery "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibSurgery.java"
click node_extract "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibraryExtractor.java"
click node_libpatch "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibraryPatcher.java"
click node_elf "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/elf/Elf.java"
click node_memory "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/memory/Memory.java"
click node_install "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/PackageM/Installer.java"
click node_uninstall "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/PackageM/uninstaller.java"
click node_pull "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/Pull.java"
click node_base "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/Base.java"
click node_launch "https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/launchApp.java"
click node_crcformat "https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/crc32/hyper"

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_help,node_user toneBlue
class node_dex,node_dexmethods,node_manifest,node_repack,node_crc,node_translate,node_vmrunner toneAmber
class node_libsurgery,node_extract,node_libpatch,node_elf,node_memory toneMint
class node_install,node_uninstall,node_pull,node_base,node_launch toneRose
class node_crcformat,node_device toneIndigo
```

## Components

### CLI workflow

- [Main workflow](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/Main.java): `antik/src/main/java/com/antik/Main.java`
- [Help output](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/ui/help.java): `antik/src/main/java/com/antik/ui/help.java`

### APK transformation

- [DEX patcher](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/DexPatcher/DexPatcher.java): `antik/src/main/java/com/antik/DexPatcher/DexPatcher.java`
- [DEX method patches](https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/DexPatcher/MethodT): `antik/src/main/java/com/antik/DexPatcher/MethodT`
- [Manifest patcher](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/manifest/manifestP.java): `antik/src/main/java/com/antik/manifest/manifestP.java`
- [APK repacking](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/utils/loading.java): `antik/src/main/java/com/antik/utils/loading.java`
- [DEX CRC patch](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/crc32/crc32.java): `antik/src/main/java/com/antik/crc32/crc32.java`
- [Translation patch](https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/DexPatcher): `antik/src/main/java/com/antik/DexPatcher`
- [Snapshot dumping](https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik): `antik/src/main/java/com/antik`

### Native surgery

- [Library surgery](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibSurgery.java): `antik/src/main/java/com/antik/librarySurgery/LibSurgery.java`
- [Library extraction](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibraryExtractor.java): `antik/src/main/java/com/antik/librarySurgery/LibraryExtractor.java`
- [Library patching](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/LibraryPatcher.java): `antik/src/main/java/com/antik/librarySurgery/LibraryPatcher.java`
- [ELF parsing](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/elf/Elf.java): `antik/src/main/java/com/antik/librarySurgery/elf/Elf.java`
- [Process memory](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/librarySurgery/memory/Memory.java): `antik/src/main/java/com/antik/librarySurgery/memory/Memory.java`

### Root operations

- [Package install](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/PackageM/Installer.java): `antik/src/main/java/com/antik/root/PackageM/Installer.java`
- [Package removal](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/PackageM/uninstaller.java): `antik/src/main/java/com/antik/root/PackageM/uninstaller.java`
- [Device pull](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/Pull.java): `antik/src/main/java/com/antik/root/Pull.java`
- [Base replacement](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/Base.java): `antik/src/main/java/com/antik/root/Base.java`
- [App launch](https://github.com/ispointer/repairip/blob/main/antik/src/main/java/com/antik/root/launchApp.java): `antik/src/main/java/com/antik/root/launchApp.java`

### Shared utilities

- [ZIP CRC parsing](https://github.com/ispointer/repairip/tree/main/antik/src/main/java/com/antik/crc32/hyper): `antik/src/main/java/com/antik/crc32/hyper`

### Other components

- **CLI user**
- **Android device**

## Connections

- CLI user → Main workflow: runs
- Main workflow → Help output: requests help
- Main workflow → DEX patcher: patches DEX
- Main workflow → Manifest patcher: patches manifest
- Main workflow → APK repacking: writes APK
- Main workflow → DEX CRC patch: patches CRC
- Main workflow → Translation patch: patches translation
- Main workflow → Library surgery: dispatches package mode
- Main workflow → Package removal: removes package
- Main workflow → Package install: installs APK
- Main workflow → Device pull: pulls files
- Main workflow → Base replacement: replaces base
- Main workflow → App launch: launches app
- DEX patcher → DEX method patches: uses patches
- DEX CRC patch → ZIP CRC parsing: reads ZIP fields
- Library surgery → Library extraction: extracts libraries
- Library surgery → Library patching: patches libraries
- Library patching → ELF parsing: parses ELF
- Library surgery → Process memory: uses memory
- Main workflow → Snapshot dumping: dumps snapshots
- Package install → Android device: installs on
- Package removal → Android device: removes from
- Device pull → Android device: reads from
- Base replacement → Android device: replaces on
- App launch → Android device: starts on
