# answer2/altercore architecture

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

- Interactive diagram: https://gitdiagram.com/answer2/altercore
- Repository: https://github.com/answer2/altercore

## Overview

AlterCore is a pure-Java Android ART method-hooking library. An application registers before/after or replacement callbacks for a method; AlterCore installs the hook, and ART dispatches calls through the registered callback logic, which can inspect or change invocation state and invoke the original implementation. The optional Xposed module loads Xposed-style modules, routes hook registration through AlterCore, and dispatches package-load callbacks. README features establish Android/API and architecture support, but the sampled excerpts do not show every ART installation detail or all Xposed module initialization paths.

Main entry points: [`altercore/src/main/java/dev/answer/altercore/AlterCore.java`](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/AlterCore.java) (AlterCore API), [`altercore/src/main/java/dev/answer/altercore/core/Hooks.java`](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/Hooks.java) (ART hook operations), [`altercore/src/main/java/dev/answer/altercore/callback/MethodHook.java`](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/callback/MethodHook.java) (Hook callbacks), [`xposed/src/main/java/dev/answer/altercore/xposed/AlterXposed.java`](https://github.com/answer2/altercore/blob/master/xposed/src/main/java/dev/answer/altercore/xposed/AlterXposed.java) (Module lifecycle)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Hook API"]
  node_altercore_api["AlterCore API<br/>[AlterCore.java]"]
  node_callback["Hook callbacks<br/>[MethodHook.java]"]
  node_replacement["Replacement callback"]
  node_params["Invocation parameters<br/>[HookParams.java]"]
end

subgraph group_engine["ART Hook Engine"]
  node_records["Hook records<br/>[HookRecord.java]"]
  node_hooks["ART hook operations<br/>[Hooks.java]"]
  node_transformer["Call transformer"]
  node_entrypoints["ART entry points<br/>[EntryPoints.java]"]
  node_suspend["Scoped suspension"]
  node_runtime["Runtime support<br/>[Runtime.java]"]
end

subgraph group_xposed["Xposed Compatibility"]
  node_loader["Module loader"]
  node_module_lifecycle["Module lifecycle<br/>[AlterXposed.java]"]
  node_xposed_bridge["Xposed hook bridge<br/>[XposedBridge.java]"]
  node_xposed_callbacks["Xposed callbacks<br/>[XCallback.java]"]
end

node_app(("Android application"))
node_target(("Target method"))
node_art(("Android ART"))
node_xposed_module(("Xposed module"))
node_package_event(("Package-load event"))

node_app -->|"registers hook"| node_altercore_api
node_altercore_api -->|"selects method"| node_target
node_altercore_api -->|"registers callback"| node_callback
node_callback -->|"specializes"| node_replacement
node_altercore_api -->|"installs hook"| node_hooks
node_altercore_api -->|"tracks hooks"| node_records
node_hooks -->|"suspends runtime"| node_suspend
node_hooks -->|"uses entry points"| node_entrypoints
node_hooks -->|"builds dispatch"| node_transformer
node_hooks -->|"patches methods"| node_art
node_art -->|"dispatches calls"| node_transformer
node_transformer -->|"provides state"| node_params
node_transformer -->|"dispatches callbacks"| node_callback
node_callback -->|"reads or changes"| node_params
node_params -->|"invokes original"| node_target
node_xposed_module -->|"loads module"| node_loader
node_module_lifecycle -->|"creates loader"| node_loader
node_module_lifecycle -->|"initializes module"| node_xposed_module
node_module_lifecycle -->|"dispatches package events"| node_xposed_callbacks
node_package_event -->|"notifies"| node_module_lifecycle
node_xposed_bridge -->|"installs via"| node_altercore_api
node_xposed_bridge -->|"adapts callbacks"| node_callback
node_xposed_callbacks -->|"registers hooks"| node_xposed_bridge

click node_altercore_api "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/AlterCore.java"
click node_callback "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/callback/MethodHook.java"
click node_replacement "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/callback/MethodReplacement.java"
click node_params "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookParams.java"
click node_records "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookRecord.java"
click node_hooks "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/Hooks.java"
click node_transformer "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookTransformer.java"
click node_entrypoints "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/EntryPoints.java"
click node_suspend "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/ScopedSuspendAll.java"
click node_runtime "https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/Runtime.java"
click node_loader "https://github.com/answer2/altercore/blob/master/xposed/src/main/java/dev/answer/altercore/xposed/ModuleClassLoader.java"
click node_module_lifecycle "https://github.com/answer2/altercore/blob/master/xposed/src/main/java/dev/answer/altercore/xposed/AlterXposed.java"
click node_xposed_bridge "https://github.com/answer2/altercore/blob/master/xposed/src/main/java/de/robv/android/xposed/XposedBridge.java"
click node_xposed_callbacks "https://github.com/answer2/altercore/blob/master/xposed/src/main/java/de/robv/android/xposed/callbacks/XCallback.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_altercore_api,node_callback,node_replacement,node_params toneBlue
class node_records,node_hooks,node_transformer,node_entrypoints,node_suspend,node_runtime toneAmber
class node_loader,node_module_lifecycle,node_xposed_bridge,node_xposed_callbacks toneMint
class node_app,node_target,node_art,node_xposed_module,node_package_event toneIndigo
```

## Components

### Hook API

- [AlterCore API](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/AlterCore.java): `altercore/src/main/java/dev/answer/altercore/AlterCore.java`
- [Hook callbacks](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/callback/MethodHook.java): `altercore/src/main/java/dev/answer/altercore/callback/MethodHook.java`
- [Replacement callback](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/callback/MethodReplacement.java): `altercore/src/main/java/dev/answer/altercore/callback/MethodReplacement.java`
- [Invocation parameters](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookParams.java): `altercore/src/main/java/dev/answer/altercore/core/HookParams.java`

### ART Hook Engine

- [Hook records](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookRecord.java): `altercore/src/main/java/dev/answer/altercore/core/HookRecord.java`
- [ART hook operations](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/Hooks.java): `altercore/src/main/java/dev/answer/altercore/core/Hooks.java`
- [Call transformer](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/HookTransformer.java): `altercore/src/main/java/dev/answer/altercore/core/HookTransformer.java`
- [ART entry points](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/EntryPoints.java): `altercore/src/main/java/dev/answer/altercore/core/EntryPoints.java`
- [Scoped suspension](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/ScopedSuspendAll.java): `altercore/src/main/java/dev/answer/altercore/core/ScopedSuspendAll.java`
- [Runtime support](https://github.com/answer2/altercore/blob/master/altercore/src/main/java/dev/answer/altercore/core/Runtime.java): `altercore/src/main/java/dev/answer/altercore/core/Runtime.java`

### Xposed Compatibility

- [Module loader](https://github.com/answer2/altercore/blob/master/xposed/src/main/java/dev/answer/altercore/xposed/ModuleClassLoader.java): `xposed/src/main/java/dev/answer/altercore/xposed/ModuleClassLoader.java`
- [Module lifecycle](https://github.com/answer2/altercore/blob/master/xposed/src/main/java/dev/answer/altercore/xposed/AlterXposed.java): `xposed/src/main/java/dev/answer/altercore/xposed/AlterXposed.java`
- [Xposed hook bridge](https://github.com/answer2/altercore/blob/master/xposed/src/main/java/de/robv/android/xposed/XposedBridge.java): `xposed/src/main/java/de/robv/android/xposed/XposedBridge.java`
- [Xposed callbacks](https://github.com/answer2/altercore/blob/master/xposed/src/main/java/de/robv/android/xposed/callbacks/XCallback.java): `xposed/src/main/java/de/robv/android/xposed/callbacks/XCallback.java`

### Other components

- **Android application**
- **Target method**
- **Android ART**
- **Xposed module**
- **Package-load event**

## Connections

- Android application → AlterCore API: registers hook
- AlterCore API → Target method: selects method
- AlterCore API → Hook callbacks: registers callback
- Hook callbacks → Replacement callback: specializes
- AlterCore API → ART hook operations: installs hook
- AlterCore API → Hook records: tracks hooks
- ART hook operations → Scoped suspension: suspends runtime
- ART hook operations → ART entry points: uses entry points
- ART hook operations → Call transformer: builds dispatch
- ART hook operations → Android ART: patches methods
- Android ART → Call transformer: dispatches calls
- Call transformer → Invocation parameters: provides state
- Call transformer → Hook callbacks: dispatches callbacks
- Hook callbacks → Invocation parameters: reads or changes
- Invocation parameters → Target method: invokes original
- Xposed module → Module loader: loads module
- Module lifecycle → Module loader: creates loader
- Module lifecycle → Xposed module: initializes module
- Module lifecycle → Xposed callbacks: dispatches package events
- Package-load event → Module lifecycle: notifies
- Xposed hook bridge → AlterCore API: installs via
- Xposed hook bridge → Hook callbacks: adapts callbacks
- Xposed callbacks → Xposed hook bridge: registers hooks
