# xxxhaoxxx/czr-hook architecture

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

- Interactive diagram: https://gitdiagram.com/xxxhaoxxx/czr-hook
- Repository: https://github.com/xxxhaoxxx/czr-hook

## Overview

CZR-Hook is an Android Unity game overlay described as a drawing project. Its visible workflow starts when the native library loads, initializes in a background thread, reads Unity/IL2CPP game objects, and draws item information and tracers through ImGui. The excerpts show the IL2CPP lookup layer and xDL’s Android ELF/linker support, but not the full initialization or hook setup; dashed links mark those uncertain runtime connections. The README provides no further feature inventory.

Main entry points: [`CZR-Hook/jni/unity/xdl/xdl.c`](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl.c) (ELF loader), [`CZR-Hook/jni/main.cpp`](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp) (Game data access), [`CZR-Hook/jni/third_party/imgui/imgui.cpp`](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/imgui.cpp) (ImGui rendering), [`CZR-Hook/jni/unity/xdl/xdl_linker.c`](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_linker.c) (Linker access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_overlay["Overlay runtime"]
  node_entry["JNI initialization<br/>[main.cpp]"]
  node_game_read["Game data access<br/>[main.cpp]"]
  node_item_draw["Item labels<br/>[main.cpp]"]
  node_tracers["World tracers<br/>[main.cpp]"]
  node_imgui["ImGui rendering<br/>[imgui.cpp]"]
  node_imgui_android["Android backend"]
  node_imgui_gl["OpenGL backend"]
end

subgraph group_unity["Unity access"]
  node_il2cpp["IL2CPP metadata<br/>[Il2Cpp.cpp]"]
end

subgraph group_loader["Native loading"]
  node_dobby["Hook interface<br/>[dobby.h]"]
  node_xdl_api["xDL API<br/>[xdl.h]"]
  node_xdl_core["ELF loader<br/>[xdl.c]"]
  node_xdl_iterate["Image iteration<br/>[xdl_iterate.c]"]
  node_xdl_linker["Linker access<br/>[xdl_linker.c]"]
  node_xdl_lzma["LZMA support<br/>[xdl_lzma.c]"]
  node_xdl_util["Loader utilities<br/>[xdl_util.c]"]
end

node_android(("Android runtime"))
node_game(("Unity game"))

node_android -.->|"loads library"| node_entry
node_entry -.->|"starts initialization"| node_game_read
node_game_read -->|"looks up methods"| node_il2cpp
node_game_read -.->|"reads game state"| node_game
node_item_draw -->|"draws labels"| node_imgui
node_tracers -->|"draws tracers"| node_imgui
node_tracers -->|"uses item positions"| node_game_read
node_imgui_android -.->|"provides platform input"| node_imgui
node_imgui_gl -.->|"renders draw data"| node_imgui
node_entry -.->|"uses hook API"| node_dobby
node_il2cpp -->|"uses loader API"| node_xdl_api
node_xdl_core -->|"implements API"| node_xdl_api
node_xdl_core -->|"uses iteration"| node_xdl_iterate
node_xdl_core -->|"uses linker helpers"| node_xdl_linker
node_xdl_core -->|"uses decompression"| node_xdl_lzma
node_xdl_core -->|"uses utilities"| node_xdl_util
node_xdl_iterate -->|"uses utilities"| node_xdl_util
node_xdl_linker -->|"enumerates images"| node_xdl_iterate
node_xdl_linker -->|"uses utilities"| node_xdl_util

click node_entry "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp"
click node_game_read "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp"
click node_item_draw "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp"
click node_tracers "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp"
click node_imgui "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/imgui.cpp"
click node_imgui_android "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/backends/imgui_impl_android.cpp"
click node_imgui_gl "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/backends/imgui_impl_opengl3.cpp"
click node_il2cpp "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/Il2Cpp.cpp"
click node_dobby "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/dobby/dobby.h"
click node_xdl_api "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/include/xdl.h"
click node_xdl_core "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl.c"
click node_xdl_iterate "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_iterate.c"
click node_xdl_linker "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_linker.c"
click node_xdl_lzma "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_lzma.c"
click node_xdl_util "https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_util.c"

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_entry,node_game_read,node_item_draw,node_tracers,node_imgui,node_imgui_android,node_imgui_gl toneBlue
class node_il2cpp toneAmber
class node_dobby,node_xdl_api,node_xdl_core,node_xdl_iterate,node_xdl_linker,node_xdl_lzma,node_xdl_util toneMint
class node_android,node_game toneIndigo
```

## Components

### Overlay runtime

- [JNI initialization](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp): `CZR-Hook/jni/main.cpp`
- [Game data access](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp): `CZR-Hook/jni/main.cpp`
- [Item labels](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp): `CZR-Hook/jni/main.cpp`
- [World tracers](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/main.cpp): `CZR-Hook/jni/main.cpp`
- [ImGui rendering](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/imgui.cpp): `CZR-Hook/jni/third_party/imgui/imgui.cpp`
- [Android backend](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/backends/imgui_impl_android.cpp): `CZR-Hook/jni/third_party/imgui/backends/imgui_impl_android.cpp`
- [OpenGL backend](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/third_party/imgui/backends/imgui_impl_opengl3.cpp): `CZR-Hook/jni/third_party/imgui/backends/imgui_impl_opengl3.cpp`

### Unity access

- [IL2CPP metadata](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/Il2Cpp.cpp): `CZR-Hook/jni/unity/Il2Cpp.cpp`

### Native loading

- [Hook interface](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/dobby/dobby.h): `CZR-Hook/jni/dobby/dobby.h`
- [xDL API](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/include/xdl.h): `CZR-Hook/jni/unity/xdl/include/xdl.h`
- [ELF loader](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl.c): `CZR-Hook/jni/unity/xdl/xdl.c`
- [Image iteration](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_iterate.c): `CZR-Hook/jni/unity/xdl/xdl_iterate.c`
- [Linker access](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_linker.c): `CZR-Hook/jni/unity/xdl/xdl_linker.c`
- [LZMA support](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_lzma.c): `CZR-Hook/jni/unity/xdl/xdl_lzma.c`
- [Loader utilities](https://github.com/xxxhaoxxx/czr-hook/blob/main/CZR-Hook/jni/unity/xdl/xdl_util.c): `CZR-Hook/jni/unity/xdl/xdl_util.c`

### Other components

- **Android runtime**
- **Unity game**

## Connections

- Android runtime → JNI initialization: loads library
- JNI initialization → Game data access: starts initialization (evidence: `CZR-Hook/jni/main.cpp`)
- Game data access → IL2CPP metadata: looks up methods (evidence: `CZR-Hook/jni/main.cpp`)
- Game data access → Unity game: reads game state
- Item labels → ImGui rendering: draws labels (evidence: `CZR-Hook/jni/main.cpp`)
- World tracers → ImGui rendering: draws tracers (evidence: `CZR-Hook/jni/main.cpp`)
- World tracers → Game data access: uses item positions (evidence: `CZR-Hook/jni/main.cpp`)
- Android backend → ImGui rendering: provides platform input
- OpenGL backend → ImGui rendering: renders draw data
- JNI initialization → Hook interface: uses hook API (evidence: `CZR-Hook/jni/main.cpp`)
- IL2CPP metadata → xDL API: uses loader API (evidence: `CZR-Hook/jni/unity/Il2Cpp.cpp`)
- ELF loader → xDL API: implements API (evidence: `CZR-Hook/jni/unity/xdl/xdl.c`)
- ELF loader → Image iteration: uses iteration (evidence: `CZR-Hook/jni/unity/xdl/xdl.c`)
- ELF loader → Linker access: uses linker helpers (evidence: `CZR-Hook/jni/unity/xdl/xdl.c`)
- ELF loader → LZMA support: uses decompression (evidence: `CZR-Hook/jni/unity/xdl/xdl.c`)
- ELF loader → Loader utilities: uses utilities (evidence: `CZR-Hook/jni/unity/xdl/xdl.c`)
- Image iteration → Loader utilities: uses utilities (evidence: `CZR-Hook/jni/unity/xdl/xdl_iterate.c`)
- Linker access → Image iteration: enumerates images (evidence: `CZR-Hook/jni/unity/xdl/xdl_linker.c`)
- Linker access → Loader utilities: uses utilities (evidence: `CZR-Hook/jni/unity/xdl/xdl_linker.c`)
