Saludos y espero su ayuda

Escrito 04 noviembre 2010 - 11:03
Escrito 04 noviembre 2010 - 11:12
Escrito 04 noviembre 2010 - 11:14
Una pregunga tu lanzas el proceso victima desde Delphi o vas a buscarlo en el sistema?
Escrito 04 noviembre 2010 - 11:17
Escrito 04 noviembre 2010 - 11:44
Date una vuelta por este hilo, aunque está en C, te puede aclarar las cosas
Y por este también
Salud OS
Escrito 04 noviembre 2010 - 01:02
Function GetProcessID(Const ExeFileName: string; var ProcessId: integer; Const ProcessNo :Integer = 1): boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; Temp: Integer; begin result := false; temp:=1; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := Sizeof(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop) <> 0 do begin if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0) or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin If Temp = ProcessNo then begin ProcessId:= FProcessEntry32.th32ProcessID; result := true; break; end else inc(Temp); end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end;
Escrito 05 noviembre 2010 - 09:48
Hola,soy nuevo y necesito una ayudita con lo que quiero intentar hacer,es lo siguiente... Inyectar una dll usando getprocessid,el problema es el proceso al que lo quiero inyectar usa 2 procesos(Ejemplo Test.exe) hay alguna manera de que busque el PID correcto y lo inyecte en ese proceso?
// Inject con CreateRemoteThread // Inyecta en todos los procesos abiertos con el nombre dado HMODULE InjectCRT(char* Proceso, char* dll) { if(!*Proceso || !*dll) return 0; int PId = 0; HANDLE hThread = 0; DWORD ExitCode = 0; LPTHREAD_START_ROUTINE hLib; // = (LPTHREAD_START_ROUTINE)LoadLibrary("dll");; PROCESSENTRY32 proc = { sizeof(proc) }; HANDLE hSysSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hSysSnapshot != reinterpret_cast<HANDLE>(-1) && Process32First(hSysSnapshot, &proc)){ do{ if(!stricmp(proc.szExeFile, Proceso)){ PId = proc.th32ProcessID; if(PId){ HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false,PId); if(hProc){ // Localizo memoria en el espacio de direcciones de la víctima void* Buffer = VirtualAllocEx(hProc, 0, strlen(dll)+1, MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE); if(Buffer){ if(WriteProcessMemory(hProc, Buffer, (void*)dll, strlen(dll)+1, NULL)){ hLib = (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32.dll"), "LoadLibraryA"); if(hLib){ hThread =:: CreateRemoteThread(hProc, NULL, 0, hLib, Buffer, 0, 0); if(hThread){ WaitForSingleObject(hThread, INFINITE ); // Espero a que se cree el Thread GetExitCodeThread(hThread, &ExitCode); // Termino el Thread CloseHandle(hThread); // Cierro el Handle hThread } } } // libero la memoria localizada... VirtualFreeEx(hProc, Buffer, 0, MEM_RELEASE); // Libero memoria } CloseHandle(hProc); // Cierro el Handle hProc } } } }while(Process32Next(hSysSnapshot, &proc)); } CloseHandle(hSysSnapshot); return (HMODULE)ExitCode; }