How badoo/hprof-tools works
Badoo HPROF Tools is a suite for inspecting, validating, transforming, and analyzing Java/Android heap dumps. Its main conversion path reads HPROF records, crunches them into compact BMD (with some data loss), and can reconstruct HPROF from BMD, optionally recovering strings from application archives. Separate workflows validate dumps, deobfuscate names using ProGuard/DexGuard mappings, and visualize Android-specific data such as view hierarchies and activity intents. The Android example captures dumps and invokes crunching on-device. Some module connections are documented in the README but their full implementations were not sampled.
Main entry points: HprofViewer.java HPROF viewer · HprofDeobfuscator.java Dump deobfuscator · HprofCruncher.java HPROF cruncher · BmdDecruncher.java BMD decruncher
Components 25
Heap formats
- HPROF reader
hprof-lib/src/main/java/com/badoo/hprof/library/HprofReader.java - HPROF writer
hprof-lib/src/main/java/com/badoo/hprof/library/HprofWriter.java - BMD reader
bmd-lib/src/main/java/com/badoo/bmd/BmdReader.java - BMD writer
bmd-lib/src/main/java/com/badoo/bmd/DataWriter.java
Format conversion
- HPROF cruncher
cruncher/src/main/java/com/badoo/hprof/cruncher/HprofCruncher.java - Crunch processor
cruncher/src/main/java/com/badoo/hprof/cruncher/CrunchProcessor.java - BMD decruncher
decruncher/src/main/java/com/badoo/bmd/decruncher/BmdDecruncher.java - Decrunch processor
decruncher/src/main/java/com/badoo/bmd/decruncher/DecrunchProcessor.java - Archive string readers
decruncher/src/main/java/com/badoo/bmd/decruncher
Dump analysis
- Dump validator
hprof-validator/src/main/java/com/badoo/hprof/validator/HprofValidator.java - Validation checks
hprof-validator/src/main/java/com/badoo/hprof/validator/ValidatingProcessor.java - Dump deobfuscator
deobfuscator/src/main/java/com/badoo/hprof/deobfuscator/HprofDeobfuscator.java - Mapping model
deobfuscator/src/main/java/com/badoo/hprof/deobfuscator/Mapping.java - HPROF viewer
hprof-viewer/src/main/java/com/badoo/hprof/viewer/HprofViewer.java - Dump data model
hprof-viewer/src/main/java/com/badoo/hprof/viewer/ViewDataProcessor.java - Android view models
hprof-viewer/src/main/java/com/badoo/hprof/viewer/android - Viewer UI
hprof-viewer/src/main/java/com/badoo/hprof/viewer/ui
Android capture
- Example app
Android example/app/src/main/java/com/badoo/hprof/cruncher/MainActivity.java - Dump catcher
Android example/cruncher-lib/src/main/java/com/badoo/hprof/cruncher/library/HprofCatcher.java - Crunch service
Android example/cruncher-lib/src/main/java/com/badoo/hprof/cruncher/library/CruncherService.java
Other components
- Engineer
- HPROF dump
- BMD file
- Obfuscation mapping
- App archive
Connections 33
- Engineer → HPROF cruncher: runs conversion
- HPROF dump → HPROF cruncher: input dump
- HPROF cruncher → HPROF reader: reads records
- HPROF cruncher → Crunch processor: processes records
- Crunch processor → BMD writer: writes BMD
- BMD writer → BMD file: produces
- Engineer → BMD decruncher: runs reconstruction
- BMD file → BMD decruncher: input format
- BMD decruncher → BMD reader: reads records
- BMD decruncher → Decrunch processor: processes records
- Decrunch processor → HPROF writer: writes HPROF
- HPROF writer → HPROF dump: produces
- Decrunch processor → Archive string readers: recovers strings
- App archive → Archive string readers: supplies strings
- Engineer → Dump validator: runs validation
- HPROF dump → Dump validator: input dump
- Dump validator → HPROF reader: reads records
- Dump validator → Validation checks: checks data
- Engineer → Dump deobfuscator: runs name recovery
- HPROF dump → Dump deobfuscator: input dump
- Obfuscation mapping → Dump deobfuscator: mapping input
- Dump deobfuscator → Mapping model: uses mappings
- Dump deobfuscator → HPROF reader: reads dump
- Dump deobfuscator → HPROF writer: writes result
- Engineer → HPROF viewer: opens dump
- HPROF dump → HPROF viewer: input dump
- HPROF viewer → HPROF reader: reads records
- HPROF viewer → Dump data model: collects dump data
- HPROF viewer → Android view models: builds Android views
- HPROF viewer → Viewer UI: renders analysis
- Example app → Dump catcher: initializes capture
- Example app → Crunch service: receives status
- Crunch service → HPROF cruncher: crunches dump