Erlang Binary and Source Code Obfuscation
Gregory Morse, Tam\'as Kozsik

TL;DR
This paper explores various obfuscation techniques for Erlang programs across multiple levels, aiming to hinder reverse engineering while preserving program behavior.
Contribution
It categorizes and analyzes obfuscation methods at different code levels, emphasizing exploitation of representational gaps in the Erlang runtime.
Findings
Obfuscation techniques include opcode tricks and control-flow modifications.
Effective obfuscation exploits gaps between high-level semantics and runtime representations.
The study provides a taxonomy of obfuscation methods for Erlang.
Abstract
This paper studies obfuscation techniques for Erlang programs at the source, abstract syntax tree, BEAM assembly, and BEAM bytecode levels. We focus on transformations that complicate reverse engineering, decompilation, and recompilation while remaining grounded in the actual behavior of the Erlang compiler, validator, loader, and virtual machine. The paper categorizes opcode-level dependency tricks, receive-based loop encodings, irregular control-flow constructions, mutability-oriented performance obfuscation, and self-modifying code enabled by dynamic module loading. A recurring theme is that effective obfuscation in BEAM often arises not from arbitrary corruption, but from exploiting representational gaps between high-level Erlang semantics and the lower-level execution model accepted by the toolchain and runtime.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
