· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.VIROLOGY —› Image Base kernel32 через анализ SEH.

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 13, 2004 16:34:58

Ерунда какая-то, если в .data лежит например только
? db "just a test",0
То нормально ищёт апи, а если в .data я инклудю структуры и кучу других данных вставляю, то CheckMZ не проходит, не могу понять в чём дело, вот собственно сам код:
start:
          Call    _Delta
_Delta:
          sub dword ptr [esp], offset _Delta  

_ReadSEH:
          xor  edx,edx
          mov  eax,fs:[edx]
          dec  edx

_SearchK32:
          cmp  [eax],edx
          je _CheckK32
          mov  eax,dword [eax]
          jmp _SearchK32

_CheckK32:
    
    mov  eax,[eax+4]
	xor ax,ax

_SearchMZ:          
	cmp word ptr [eax],5A4Dh
	je _CheckMZ
	sub eax,10000h
	jmp _SearchMZ

_CheckMZ:
	mov edx,[eax+3ch]
	cmp word ptr [eax+edx],"ZM"
	jne _Exit

Соответсвенно
first .data
	.data
		?         db      "Choor test",0

second .data
.data
	include                 fioexhdr.inc	include                 mz.inc	include                 pe.inc 	filename                db      'somefile.exe',0 	fileinfo                fi_struc ? 	virus_start:            rept    8192-5	                        nop
	                        endm
	return_here:            db      0E9h
	save_eip                dd      ?
	virus_size              equ     $-virus_start
	                        db      8192 dup (?)
	virus_virtsize          equ     $-virus_start
	db 0

В первом случае работает во втором уходит в _Exit
Я только только начал изучать вирусологию, прошу оказать помощь.
Проштудировал весь www.wasm.ru


Дата: Июл 13, 2004 17:02:12

> mov edx,[eax+3ch]
> cmp word ptr [eax+edx],"ZM"

Откуда MZ там где должен быть PE ???


Дата: Июл 13, 2004 18:01:52

Юзай метод z0mbie.
Он самый лучший, стабильно работает в 98х и NT.
Я его тебе и присоединяю.

_297463583__K32man.inc


Дата: Июл 13, 2004 18:24:09

2Dr.Golova: хмм... Да как бы вот это и идёт проверка на PE с помощью MZ, сначала нахожу сигнатуру MZ а потом уже ловлю PE.

2alex_rsd: а есть конкретный пример вируса с этим вычислением апи?


Дата: Июл 13, 2004 18:33:40

choor
> сначала нахожу сигнатуру MZ а потом уже ловлю PE.

По коду это что-то не видно ;-)
Где проверка на сигнатуру PE ?


Дата: Июл 13, 2004 19:31:22

хмм, какая разница что там дальше?
Говорю я дебагером смотрел выскакивает в
_CheckMZ:
mov edx,[eax+3ch]
cmp word ptr [eax+edx],"ZM"
jne _Exit
И дальше не канает


Дата: Июл 13, 2004 19:48:21 · Поправил: Asterix

choor
По твоим словам нельзя понять точно в каком месте у тебя вылетает, но всё-равно код должен быть приблизительно такой,
для простоты примера базу я получаю через GetModuleHandle
       invoke GetModuleHandle, NULL
       mov edx, eax
       cmp WORD PTR [eax], 'ZM'
       jne @PE_Error
       mov eax, DWORD PTR [eax+03Ch]
       cmp WORD PTR [eax+edx], 'EP'
       jne @PE_Error


Дата: Июл 13, 2004 23:48:15

2Asterix: хмм, интересно, можешь дать более полный код, а не только этот кусок?


Дата: Июл 14, 2004 00:05:28

PE-сигнатура ваще-то DWORD..(Asterixy на память:)


Дата: Июл 14, 2004 01:06:09

je_
Согласен, но в данном случае это не так важно
ну чтоб быть совсем правильным то тогда нужно было писать:
       invoke GetModuleHandle, NULL
       mov edx, eax
       cmp WORD PTR [eax], IMAGE_DOS_SIGNATURE 
       jne @PE_Error
       mov eax, DWORD PTR [eax+03Ch]
       cmp DWORD PTR [eax+edx], IMAGE_NT_SIGNATURE
       jne @PE_Error


Дата: Июл 14, 2004 01:16:57

choor
Более полный код чего?
Можешь почитать Iczelion'а, статьи про PE файлы, и вобще лучше работать с полями PE заголовка через сигнатуры.


Дата: Июл 14, 2004 01:56:31

И ещё, есть исходники y0da, бери и разбирайся
http://www.wasm.ru/src/6/kernel.zip


Дата: Июл 14, 2004 13:22:30

Есть, конечно, и даже исходники движков.
Сходи на сайт www.z0mbie.host.sk там найдешь, но там сложно.
А через форум не пройдет - размер не тот.


Дата: Авг 10, 2004 07:49:18 · Поправил: Black_mirror

Предлагаю пооптимизировать поиск адреса kernel'а по размеру, у меня пока получилось 25 байт:
00402000 > $ 31F6           XOR ESI,ESI
00402002   . 64:AD          LODS DWORD PTR FS:[ESI]
00402004   > 96             XCHG EAX,ESI
00402005   . AD             LODS DWORD PTR DS:[ESI]
00402006   . 99             CDQ
00402007   . 66:42          INC DX
00402009   .^75 F9          JNZ SHORT seh.00402004
0040200B   . AD             LODS DWORD PTR DS:[ESI]
0040200C   . 21D0           AND EAX,EDX
0040200E   . 29D0           SUB EAX,EDX
00402010   > 01D0           ADD EAX,EDX
00402012   . 66:8138 4D5A   CMP WORD PTR DS:[EAX],5A4D
00402017   .^75 F7          JNZ SHORT seh.00402010
00402019 


Дата: Авг 10, 2004 08:58:29

22 байта.

00401A00      33F6          xor     esi, esi
00401A02      64:AD         lods    [dword fs:esi]
00401A04      96            xchg    eax, esi
00401A05      AD            lods    [dword ds:esi]
00401A06      09C0          or      eax, eax
00401A08    ^ 79 FA         jns     short 00401A04
00401A0A      AD            lods    [dword ds:esi]
00401A0B      48            dec     eax
00401A0C      66:33C0       xor     ax, ax
00401A0F      66:8138 4D5A  cmp     [word ds:eax], 5A4D
00401A14    ^ 75 F5         jnz     short 00401A0B

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.094