LINUX.ORG.RU

История изменений

Исправление mix_mix, (текущая версия) :

Как же хреново быть тобой, всё таки, ты бы хоть немного подучился, прежде чем кукарекать.

call $+2
pop ebp
mov [ebp+6], сl
add eax, ebx
В eax и ebx идут параметры бинарной операции, в младших битах ecx её опкод. То есть мы можем в рантайме заменить add на sub, например. С длинами инструкций только мог немного напутать. Btw, всё то же самое можно сделать и на сишке, выглядит только чуть более вырвиглазно. В той же винде в начале каждой библиотечной функции до сих пор стоит «заглушка» в 5-9 байт, чтобы их можно было переписать на long-jmp, необходимый для хуков.

Исходная версия mix_mix, :

Как же хреново быть тобой, всё таки, ты бы хоть немного подучился, прежде чем кукарекать.

call $+2
pop ebp
mov [ebp+6], сl
add eax, ebx
В eax и ebx идут параметры бинарной операции, в младших битах ecx её опкод. То есть мы можем в рантайме заменить add на sub, например. С длинами инструкций только мог немного напутать.