Здраствуйте... Пишу простый инжектор кода в процесс(win32). Использую CreateRemoteThread. Внедряю код функции которая должна запустится в новом потоке удаленного процесса. Все вроде норм. но у меня траблы с WriteProcessMemory. вот кусок кода си++: Код (Text): int main (void) { DWORD dwThreadId = 0, pID=0; void *pRemoteThread = NULL; char ExeFile[1024] = {0}; HANDLE hProcess = NULL, hSnap = NULL; HINSTANCE hUser = NULL; RPar my_RPar, *pmy_RPar = NULL; PROCESSENTRY32 pe32 = {0}; DWORD dwThreadSize = 2048; GetPrivilege("SeDebugPrivilege"); //получаю SeDebugPrivilege hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,FindProcessByName("calc.exe")); //открываю процесс if(hProcess == NULL) return FALSE; cout<<"opened\n"; //выделяю память pRemoteThread=VirtualAllocEx(hProcess,0,dwThreadSize,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE); if(pRemoteThread == NULL) return FALSE; cout<<"alloc\n"; //и тут облом - хочу писать данные в память if(!WriteProcessMemory(hProcess, (LPVOID)pRemoteThread, (LPCVOID)&ThreadProc, dwThreadSize, 0) ) {cout<<"error:"<<GetLastError()<<endl;system("PAUSE");return FALSE;} cout<<"wrote code\n"; system("PAUSE"); .................... WriteProcessMemory выдает ERROR_ACCESS_DENIED хотя я использую SeDebugPrivilege да и система у меня Win32 SP3 помогите разобратся...может существует лучшый способ инжекта кода(не dll) спасибо
Может использовать VirtualProtect для данного куска памяти. Как-то раз дядя Рихтер в своей книге писал, что код с WriteProcessmemory может крашиться как раз из-за отсутствия этой самой функции.