In-House Bytecode Obfuscator

Local Console UI Design — Kotlin/JVM · ASM · Symbol Renaming · 2 Screens

01 — Configure Protection Pass
localhost:8080/protect
Obfuscator
local console · v0.3
Protect artifact
Rewrites classes through ASM, then re-verifies every frame before writing output
Input
📦
ekyc-sdk-release.aar
4.8 MB · 812 classes
Symbol renaming
Classes, methods, fields
Recompute frames
COMPUTE_FRAMES on rewrite
Verify after write
Catch bad frames at build time
String encryption
Planned — not yet enabled
Keep rules rules.kts
// Public SDK surface must survive renaming —
// integrators compile against these names.
keep "com.example.ekyc.api.**" {
    methods = Visibility.PUBLIC
    fields  = Visibility.PUBLIC
}

// Entry points resolved reflectively at runtime.
keep "com.example.ekyc.ui.*Activity"
keep "**.*Serializer"

// Native bridges — JNI looks these up by name.
keepNames "com.example.ekyc.native.**" {
    annotatedWith = "@JniEntry"
}

// Everything else is fair game.
rename "com.example.ekyc.internal.**" {
    dictionary = Dictionary.SHORT_ALPHA
}
Frame recomputation is the part that actually decides whether the artifact runs. A renamed class with a stale stack map passes the build and then fails verification on device — so the pass re-verifies every rewritten class before anything is written to disk.
02 — Pass Report & Symbol Mapping
localhost:8080/reports/run-142
Obfuscator
local console · v0.3
Run #142 — completed
ekyc-sdk-release.aar → ekyc-sdk-protected.aar · 6.2 s
812
Classes rewritten
647
Symbols renamed
165
Kept by rule
0
Verify failures
Symbol mapping (sample)
internal.TamperEnginea.b.c
internal.QuadNormalisera.b.d
internal.SeamDetectora.b.e
internal.util.Hashinga.b.f
api.EkycClientapi.EkycClient (kept)
api.OnboardingResultapi.OnboardingResult (kept)
Renamed647 / 812 · 79.7%
Pass log ✓ verified
[00.00] reading ekyc-sdk-release.aar
[00.31] 812 classes indexed, 4 keep rules applied
[00.44] building class graph … 3,104 refs
[01.02] renaming pass — 647 symbols
[02.18] rewriting with COMPUTE_FRAMES
[03.51] ! frame mismatch in internal.SeamDetector
[03.51] └ recomputing from common superclass
[03.88] resolved
[04.60] verifying 812 classes
[06.02] all frames verified — 0 failures
[06.20] wrote ekyc-sdk-protected.aar (4.9 MB)
[06.20] wrote mapping-142.txt
The mapping file is retained per run so a stack trace from a protected build can be translated back to original symbol names during support triage.