Вычисление VirtualSize
Это название является предлогом, чтобы показать вам другие странные опкоды, которые очень полезны для вычисления VirtualSize, так как мы должны добавить к нему значение и получить значение, которые было там до добавления. Конечно, опкод, о котором я говорю - это XADD. Ладно, ладно, давайте посмотрим неоптимизированное вычисление VirtualSize (я предполагаю, что ESI - это указатель на заголовок последней секции):
mov eax,[esi+8] ; 3 байта push eax ; 1 байт add dword ptr [esi+8],virus_size ; 7 байт pop eax ; 1 байт
А теперь давайте посмотрим, как это будет с XADD:
mov eax,virus_size ; 5 байтов xadd dword ptr [esi+8],eax ; 4 байта
С помощью XADD мы сохранили 3 байта ;). Между прочим, XADD - это инструкция 486+.