Путеводитель по написанию вирусов под Win32

         

Работа с умножением


Например, в коде, где ищется последняя секция, очень часто встречается следующее (в EAX находится количество секций - 1):

mov ecx,28h ; 5 байтов mul ecx ; 2 байта

И это сохраняет результат в EAX, правильно? Ладно, у нас есть гораздо более лучший путь сделать это с помощью всего лишь одной инструкции:

imul eax,eax,28h ; 3 байта

IMUL сохраняет в первом регистре результат, который получился с помощью умножения второго регистра с третьим операндом, который в данном случае был непосредственным значением. Хех, мы сохранили 4 байта, заменив две инструкции на одну!



Содержание раздела