Здр. Вот я опять со своими баранами, в общем базонезависимый код у меня на С++ не получаеться писать, поэтому взялся за асм, вот что вышло : Код (Text): .386 .MODEL Flat, STDCALL ;--------------------------------------------------------------------- --- ; Functions ;--------------------------------------------------------------------- --- ; 0x77D7057D - MessageBoxA ; 0x7C80CCA9 - ExitThread ;--------------------------------------------------------------------- --- ;--------------------------------------------------------------------- --- ; libs ;--------------------------------------------------------------------- --- includelib c:masm32libuser32.lib includelib c:masm32libkernel32.lib ;--------------------------------------------------------------------- --- ; D A T A ;--------------------------------------------------------------------- --- .DATA MyMessageBox DWORD 2010580349 ; MessageBoxA MyExitThread DWORD 2088815785 ; ExitThread .CODE start: push 0 push 0 push 0 push 0 call MyMessageBox PUSH 0 call MyExitThread end start в опкодах это вот что значит : Код (Text): 6A 00 ; push 0 6A 00 ; push 0 6A 00 ; push 0 6A 00 ; push 0 E8 70 F5 96 77 ; Call user32.messageboxa 6A 00 ; push 0 E8 95 BC 40 7C ; call kernel32.exitthread ( нужен, я ведь внедряю поток, и его надо както завершить ) Вот, до внедрения подрубаюсь олькой к процессу (notepad.exe) но там он просто пишет "Access violation when executing [F790F57D] - use блабла" так вот, вроде у меня всё норм почему трэд останавливаеться ? и кстати в окне (в ольке) CPU потока почему то пусто = а в списке потоков вот что : Threads, item 0 Ident=000006DC Entry=7C810856 Data block=7FFDE000 Last error=ERROR_SUCCESS (00000000) Status=Active Priority= 32 + 0 User time= 0.0000 s System time= 0.0000 s внедряюсь так http://www.everfall.com/paste/id.php?8dg2e66libpl
Че-то я сомневаюсь, что call'ы базонезависимые у тебя получились. Делай хотя бы Код (Text): mov reg, offset call reg
Код (Text): ... char shellcode[]= "\x6A\x00" // PUSH 0 MB_OK "\x6A\x00" // PUSH 0 Caption_NULL "\x6A\x00" // PUSH 0 Text_NULL "\x6A\x00" // PUSH 0 HWND_NULL "\xB8\x7D\x05\xD7\x77" // mov eax, 0x77D7057D ( EIP+MessageBox ) "\xFF\xD0" // call eax "\x6A\x00" // PUSH 0 dwExitCode_0 "\xB8\xA9\xCC\x80\x7C" // mov eax, 0x7C80CCA9 ( EIP+ExitThread ) "\xFF\xD0"; // call eax /* ; 0x77D7057D - MessageBoxA ; 0x7C80CCA9 - ExitThread */ ... EIP+AIP_FUNC_ADDR
поставь в самом начале 0xCC (int 3) включи Olly дефолтным дебаггером и глянь доходит ли дело до твоего кода, а если доходит то оттрэйси..