Драсте всем... осуществил перехват функции CreateProcess... в своем созданном тестовом процессе, перехват осуществляется...после возврата в программу у мя сразу идет выход из программы.... но он не осуществляется говорит не могу обратится к адресу , где я мог затереть стек... Заранее все огр.спасибо... Вот код перехватчика: BOOL result; HANDLE cProcess = GetCurrentProcess(); HMODULE kern = GetModuleHandle("kernel32.dll"); void * AddrCreateProcess = GetProcAddress(kern,"CreateProcessA"); BOOL (*FuckAddr)( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); FuckAddr = FuckCreateProcess; InjectCode Inject; Inject.sJmp = 0xE9; Inject.sJmpArg = (DWORD)FuckAddr - ((DWORD)AddrCreateProcess + 0x5); DWORD countW; result = ReadProcessMemory(cProcess,AddrCreateProcess,temp22,5,&countW); result = WriteProcessMemory(cProcess,AddrCreateProcess,&Inject,sizeof(Inject),&countW);
Возможно ли такое? Я открываю процесс с параметрами: PROCESS_CREATE_THREAD | PROCESS_VM_WRITE | PROCESS_VM_OPERATION может какой нить поток в программе изменить область памяти куда я хочу записать свой жамп, допустим на PAGE_NOACCESS.... стоит ли использовать повторно изменение защиты памяти? с помощью VirualProtect ???? Заранее все спасибо!!!