90.7% Semantic Coverage

VRChat IL2CPP Reverse Engineering

Deep deobfuscation of VRChat's GameAssembly.dll — 478,923 named methods across the June 5 build. Beebyte ÌÍÎÏ obfuscation defeated via RVA propagation, Codex batch analysis, sibling-context inference, Hex-Rays pseudocode, and 7 community data sources.

0
Classes
0
Methods
0
Fields
90.7%
Semantic
June 5 build · Unity 2022.3.x · IL2CPP v29.1 · 88,400 classes
Overview
Naming Quality
Pipeline
Systems
Tools & IDA

C Classes

88,400
Semantic83,873 (94.9%)
Renamed obfuscated11,503
Semantic renamed7,813 (67.9%)
Fallback renamed3,690 (32.1%)
Namespaces724

M Methods

528,135
Named methods478,923 (90.7%)
Hash remaining49,212 (9.3%)
cross_version entries39,623
RVA propagation+15,527
Sibling-context+13,565

F Fields

2,870
Total fields2,870
Semantic2,712 (94.5%)
Renamed fields158
Fallback/renamed158 (5.5%)

Overall Naming Quality

90.7%Semantic
Named methods: 478,923
Hash remaining: 49,212
Total methods: 528,135

90.7% of 528,135 methods have been named via RVA propagation (15.5K), Codex mega-batch analysis (2.8K), sibling-context inference (13.5K), Hex-Rays pseudocode, and 7 community sources. The remaining 9.3% use stable hash fallback identifiers (m_XXX).

Zero raw obfuscated class names remain. 11,503 obfuscated classes renamed (7,813 semantic + 3,690 fallback). 39,623 cross-version method name entries. Quality audit complete: 122 batches applied, ~13.8K low-confidence predictions removed (precision over raw coverage).

Field Naming Summary

June 5 field coverage from the current pipeline summary and final dump.

MetricCountCoverage
Semantic fields2,71294.5% of all fields
Renamed/fallback fields1585.5% of all fields
Total fields2,870June 5 dump
94.5% semantic5.5% renamed/fallback

Method Naming Summary

June 5 method coverage from the current pipeline summary and final dump.

MetricCountCoverage
Named methods478,92390.7% of all methods
Hash remaining (m_XXX)49,2129.3% of all methods
Total methods528,135June 5 dump
90.7% named9.3% hash remaining

Runtime Type Inference Engine

Data Source
92,552 field types from Frida runtime extraction
Attached to offline VRChat via extract_field_types_v2.py
Type Maps
160+ known type → name mappings
Unity, VRChat, Photon, System, Collections
Recovery
40+ substring patterns for garbled types
Partial type recovery from corrupted metadata

Remaining Limitation: No Method Bodies

This is a structural dump — signatures, types, and RVA addresses only. Actual method logic lives as machine code in GameAssembly.dll (206.8 MB). 10,670 functions have been decompiled via Hex-Rays, yielding 11,190 LLM-predicted names. Load the IDA rename script (133K+ entries) into IDA Pro for full analysis, or use Ghidra.

Deobfuscation Pipeline

Multi-strategy pipeline: vocabulary merge → 11-phase deobfuscation → RVA propagation (v2 + cascade) → sibling-context LLM inference → Hex-Rays pseudocode analysis → output generation. 39,623 cross-version entries from 11+ data sources.

0
Vocabulary Merge
7,926 names from 7 sources → unified_vocabulary.json
1
Compiler Artifacts
686 async state machines + delegates classified
2
Semantic Analysis
661 classes named by method signature patterns
3
Unity Components
893 MonoBehaviour/ScriptableObject subclasses identified
4
Inheritance Chain
570 classes named via parent → child propagation
5
Cross-Reference
593 by shared methods, sibling analysis, community maps
6
Fallback Hashing
3,690 renamed classes use stable fallback names
7
Smart Field & Method Renaming
158 fields + 49,212 methods — 4 field strategies + VA propagation + context-aware inference

Data Sources

precise_dump.json40 MB
field_types.json (Frida)11 MB
unified_vocabulary.json806 KB
GameAssembly.dll206.8 MB
Community repos36 external

Output Files

deobfuscated_dump.json36.4 MB
deobfuscated_dump.cs18.3 MB
Source tree (output/src/)1,126 files
ida_apply_names.py133K+ renames
name_mapping.json8.9 MB

Deep Systems Analysis

Runtime-verified analysis of VRChat's core subsystems via Frida instrumentation.

VRC_Secondary — Anti-Tamper

499 methods75 fields

Per-frame Update + LateUpdate monitoring with three-tier sibling redundancy verification. Primary anti-cheat system — detects IL2CPP struct modifications, memory patches, and hook tampering.

PlayerNet — Network Serialization

FlatBuffer 8/32PoseEvent

Dual-precision FlatBuffer serialization. PoseEvent encodes full body pose: head/body/hip transforms + hand gestures + finger curl values + eye tracking. Interpolation/extrapolation for smooth networked movement.

Photon Message Pump

1,420/sHighest frequency

Network tick at 1,420 calls/sec — polls Photon transport buffer for incoming RPCs, events, and state updates. Heartbeat at 200/s keeps connection alive.

Udon VM — Sandbox

UdonHeapWhitelist/Blacklist

Factory-pattern virtual machine. UdonHeap bounds-checked memory with whitelist/blacklist + signature verification sandbox. Executes world creator scripts in isolation.

PhysBone — Avatar Physics

31 per-frameDependency graph

31 methods execute every frame per avatar. Dependency graph rebuilt each frame for bone chain simulation — hair, clothing, ears, tails. Major performance cost for crowded instances.

Global Namespace — Async Engine

13,908 classes1,012 state machines

Largest namespace. 928 async state machines are network-related (API calls, asset downloads, world loading). 930 hookable MoveNext RVAs identified for runtime analysis.

Runtime Probe Results (90s, 155 hooks)

MethodCalls/secFunction
PhotonConnectionHandler.m_FC81,420/sPhoton network tick (message pump)
*.m_ACA410/sAsync task dispatcher
*.m_DEE200/sHeartbeat / keep-alive
Offline mode: 6/155 hooks fired (room/udon/network/impostor all silent)

Pipeline Tools

run_full_pipeline.pyOrchestrator (5 stages)
deobfuscate.py8-phase + smart rename
extract_field_types_v2.pyFrida field type extraction
build_va_propagation_v2.py+7,252 methods via call graph
ida_hexrays_export.py10,670 functions decompiled
generate_source_tree.py1,126 organized .cs files
extract_precise_dump.pyIL2CPP struct scanner
deep_probe.py/jsRuntime hook framework

IDA Pro Integration

# Apply 133K+ deobfuscated names to IDA
File → Script File → ida_apply_names.py
Function renames133K+
Hex-Rays decompiled10,670
LLM predictions applied39,623
IDA database2.7 GB (.i64)
CompatibleIDA 9.x

Obfuscation Details — Beebyte

Character Set

Names encoded as 23-character strings using U+00CC (Ì), U+00CD (Í), U+00CE (Î), U+00CF (Ï). Regex: ^[\u00CC-\u00CF]{3,}$

IL2CPP Modifications

Struct layout altered: FieldInfo at +0xA0 (not +0x88), field_count at +0x124 (not +0x122). 264 IL2CPP exports renamed, only 3 left unobfuscated.