Hawkynt

BCJ ARM

Branch/Call/Jump filter for 32-bit ARM (A32) machine code. Detects BL (Branch with Link) instructions, identified by the 0xEB opcode byte, and rewrites their word-aligned 24-bit relative offset into an absolute word address so repeated calls to the same target produce identical byte sequences.

Properties

Property Value
Category Compression Algorithms
Sub-category Transform
Security status Not classified
Complexity Intermediate
Inventor Igor Pavlov
Year 2003
Origin 🇷🇺 Russia
Source algorithms/compression/bcj-arm.js

Security

Status: not classified — treat as unverified.

No vulnerabilities are recorded for this implementation.

Documentation

References

Test vectors

2 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.

Vector 1 — Empty buffer

Field Value
input (empty)
expected (empty)

Vector 2 — Two consecutive BL instructions (little-endian words, opcode byte 0xEB)

Field Value
input 000000eb010203eb
expected 000000eb020203eb

← All algorithms