THM · Glyph — reverse engineering niestandardowej VM

Odtworzenie dispatchera bytecode ręcznie zbudowanej VM stosowej i odszyfrowanie flagi 40-liniowym lifterem w Pythonie.

· 3 min czytania
#thm#re#vm

Triage

Binarka ładuje blob z .rodata i dispatchuje na podstawie dolnego nibbla każdego bajtu. Dwanaście handlerów — czysto.

Lifting

Każdy handler mapuje się na jedną operację stosu. Prosty lifter w Pythonie produkuje czytelne pseudo-asembler:

PUSH 0x41
XOR
ROR 3
CMP imm

Rozwiązanie

Traktuj sekwencję porównań jako układ równań nad GF(2^8). z3 znajduje jedyne spełniające wejście w mniej niż sekundę.


sharelinkedinx / twitter