Я работаю над обфускатором asm x86, который использует Intel- код синтаксиса в виде строки и выводит эквивалентный набор запутанных кодов операций.
Вот пример:
mov eax, 0x5523
or eax, [ebx]
push eax
call someAPI
Примерно так:
mov eax, 0xFFFFFFFF ; mov eax, 0x5523
and eax, 0x5523 ;
push [ebx] ; xor eax, [ebx]
or [esp], eax ;
pop eax ;
push 12345h ; push eax
mov [esp], eax ;
call getEIP ; call someAPI
getEIP: ;
add [esp], 9 ;
jmp someAPI ;
Это всего лишь пример, я не проверял, не портит ли это флаги (вероятно, это так).
Прямо сейчас у меня есть XML-документ, в котором перечислены шаблоны инструкций (например, push e * x
) и список инструкций замены, которые можно использовать.
Я ищу способ автоматической генерации последовательностей кодов операций, которые дают тот же результат, что и ввод. Я не против использовать образованный брутфорс, но я не уверен, как бы подойти к этому.