Траблы с инжектом. При инжекте, процесс svchost.exe вылетает ошибка. Код (Text): format PE GUI 4.0 include 'win32a.inc' section '.code' code readable writeable executable stri STARTUPINFO ? prci PROCESS_INFORMATION ? szSvchost db 'svchost.exe', 0 oldp dd 0 entry $ call apis mov [stri.cb], sizeof.STARTUPINFO invoke CreateProcess, 0, szSvchost, 0, 0, 0, CREATE_SUSPENDED, 0, 0, stri, prci test eax, eax jz @F invoke LoadLibraryEx, szSvchost, 0, DONT_RESOLVE_DLL_REFERENCES test eax, eax jz @F add eax, [eax+3Ch] mov edi, [eax+28h] add edi, [eax+34h] invoke VirtualProtectEx, [prci.hProcess], edi, _download_end-_download , PAGE_EXECUTE_READWRITE, oldp invoke WriteProcessMemory, [prci.hProcess], edi, _download, _download_end-_download, 0 invoke ResumeThread, [prci.hThread] @@: ret apis: mov edi,[MessageBox] mov [_MessageBox],edi ret ;------------------------------------------------------------------------------; _download: call .delta .delta: pop ebp sub ebp,.delta xor esi,esi push MB_OK lea eax,[ebp+_Str1] push eax lea eax,[ebp+_Str1] push eax push HWND_DESKTOP call [ebp+_MessageBox] ret .data: _MessageBox dd 0 _Str1 db 'Hello!',0 _download_end: ;------------------------------------------------------------------------------; section '.idata' import data readable writeable library kernel32, 'kernel32.dll' include 'apia\kernel32.inc' include 'apia\USER32.INC'
Когда я инжектил свой код в процессы, то я сначала останавливал ВСЕ потоки того процесса, куда я пытался что-то впихнуть. Это во-первых. Во-вторых, чтобы что-то куда-то записать, надо под это дело память выделить (NtAllocateVirtualMemory(...)), иначе может получиться так, что ты запишешь свой код на код или данные того процесса, куда пишешь. В-третьих, (как следствие) ты пишешь по адресу EDI, а ты уверен, что по этому адресу в процессе svchost.exe память доступна для записи?
отвечу и сюда, также, как и на форум фасма. воспользуйся командой Int 3, и посмотри что происходит. У тебя нет адреса МессагаБокса, он неверный лежит в [_MessageBox]. отладчик тебе в помощь.
dead_body почему это его нет? mov edi,[MessageBox] mov [_MessageBox],edi ;записывается адрес MessageBox в переменную _MessageBox
А можно вопрос в тему - как произвести inject в svchost не будучи админом, то есть не используя SE_DEBUG_PRIVILEGE(доступную по идее только админам)?
maestro-ant Такой вот вопрос: "Чем отлаживать внедряемый в посторонний процесс, код?" Вот этот твой код (или что-то больше) ---> Код (Text): ... _download: call .delta .delta: pop ebp sub ebp,.delta xor esi,esi push MB_OK lea eax,[ebp+_Str1] push eax lea eax,[ebp+_Str1] push eax push HWND_DESKTOP call [ebp+_MessageBox] ret ... ---> как этот код вообще возможно отлаживать, т.е. каким отладчиком? Olly не показывает код, может я не туда смотрю? или может настройки для Olly какие я не учел?
hlt + Delphi 7 При вылете процесса можно отладить при помощи Delphi-debugger. Очень хороший отладчик. Это плюс в сторону делфи. А никак. Даже будучи админом без отладочных привилегий инжект в системный процесс ты не зделаешь... Только сплойт. ЗАЧЕМ?? В чем смысл? У меня все прекрасно инжектится и без остановки.