
187 064 инструкции ради одного флага: Разбор HTB Callfuscated (Insane)
vt729830 только что 187 064 инструкции ради одного флага: Разбор HTB Callfuscated (Insane) Сложный 4 мин 4 Python * Информационная безопасность * Реверс-инжиниринг * Кейс Обложка к публикации статьиНазвание —...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Вот важная новость с фронта ИИ: vt729830 только что 187 064 инструкции ради одного флага: Разбор HTB Callfuscated (Insane) Сложный 4 мин 4 Python * Информационная безопасность * Реверс-инжиниринг * Кейс Обложка к публикации статьиНазвание — CallfuscatedКатегория — ReversingСложность — InsaneСсылка — задачка запрашивает пароль и на правильном печатает Correct. Validate the challenge using the flag: %s. Внутри труп, разложенный обфускатором: виртуальная машина со своим байткодом на 586 ячеек, MBA поверх каждой арифметической операции, opaque-предикаты, раздувающие CFG, и фирменная нарезка кода на тысячи call/pop- гаджетов (собственно как и в названии, Call-ob-fuscated).
Что за зверьАрсенал, который навешан на функцию проверки:VM. Пароль проверяет не нативный код, а интерпретатор поверх массива program. В дизассемблере видно диспетчер и таблицу опкодов, а не алгоритм.
Технические детали
Значит, реверсить придётся дважды: сначала саму VM, потом её байткод. Каждая примитивная операция размазана в цепочку смешанной булево-арифметической эквивалентности. На статике выглядит жутко, на трассе схлопывается в одно значение.
Ветки с заранее известным исходом, которые существуют только чтобы удвоить граф и увести дизассемблер в мёртвые пути. Junk / call-обфускация. Каждая реальная инструкция завёрнута в call gadget; gadget: pop r8; ; call next.
Отсюда десятки тысяч инструкций на ровном месте. Общий знаменатель у всех четырёх один: они переживают статику, но не переживают исполнение. На конкретном прогоне MBA — это число, opaque — это всегда одна и та же ветка, junk — это шум с предсказуемым адресом возврата.
Отраслевые последствия
Значит, всё решается динамикой. Разведка$ file crackme crackme: ELF 64-bit LSB executable, x86-64, dynamically linked, stripped $ echo AAAA | . /crackme Welcome to callfuscated crackme.
To register enter your password: Incorrect flag. Try againСтроки дают якоря: %63s (scanf пишет в буфер 0x40f080), Correct... Диспетчер VM в дизассемблере узнаётся мгновенно:mov eax, ; pc mov eax, ; program -> opcode test eax, eax jne В фрейме — pc, длина программы, sp, пара регистров и стек данных.
Стековая машина, классика. ПланСвой трассировщик на ptrace — записать поток исполнения на известном вводе (ABCDEFGH…). Свой дампер — вытащить program (586 ячеек) прямо из памяти.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




