В некоторых случаях стартовые функции
text:080480B8 start proc near
text:080480B8
text:080480B8 push ebp
text:080480B9 mov ebp, esp
text:080480BB sub esp, 0Ch
…
text:0804813B ret
text:0804813B start endp
Листинг 15 пример нормальной стартовой функции с классическим прологом и эпилогом
В некоторых случаях стартовые функции передают бразды правления libc_start_main и заканчиваются по hlt без ret. Это вполне нормальное явление. "Вполне" потому что очень многие вирусы, написанные на ассемблере, получают в "подарок" от линкера такой же стартовый код. Поэтому присутствие стартового кода в исследуемом файле, не дает нам никаких оснований считать его здоровым.
.text:08048330 public start
.text:08048330 start proc near
.text:08048330 xor ebp, ebp
.text:08048332 pop esi
.text:08048333 mov ecx, esp
.text:08048335 and esp, 0FFFFFFF8h
.text:08048338 push eax
.text:08048339 push esp
.text:0804833A push edx
.text:0804833B push offset sub_804859C
.text:08048340 push offset sub_80482BC
.text:08048345 push ecx
.text:08048346 push esi
.text:08048347 push offset loc_8048430
.text:0804834C call ___libc_start_main
.text:08048351 hlt
.text:08048352 nop
.text:08048353 nop
.text:08048353 start endp
Листинг 16 альтернативный пример нормальной стартовой функции
Большинство зараженных файлов выглядит иначе. В частности, стартовый код вируса PolyEngine.Linux.LIME.poly выглядит так:
.data:080499C1 LIME_END: ; Alternative name is 'main'
.data:080499C1 mov eax, 4
.data:080499C6 mov ebx, 1
.data:080499CB mov ecx, offset gen_msg ; "Generates 50 [LiME] encrypted…"
.data:080499D0 mov edx, 2Dh
.data:080499D5 int 80h ; LINUX - sys_write
.data:080499D7 mov ecx, 32h
Листинг 17 стартовый код вируса PolyEngine.Linux.LIME.poly
Содержание Назад Вперед