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

         

если вызов функции не удался,


Так как многие API-функции в Ring-3 возвращают вам значение -1 (OFFFFFFFh), если вызов функции не удался, и вам нужно проверять, удачно ли он прошел, вы часто должны сравнивать полученное значение с -1. Но здесь та же проблема, что и ранее - многие люди делают это с помощью 'CMP EAX, 0FFFFFFFh', хотя то же можно осуществить гораздо более оптимизировано...

cmp eax,0FFFFFFFFh ; 5 байтов jz insumision ; 2 байта (если короткий)

Давайте посмотрим, как это можно оптимизировать:

inc eax ; 1 байт jz insumision ; 2 байта dec eax ; 1 байт

Хех, может быть это занимает больше строк, но зато весит меньше байтов (4 байта против 7).


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