Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. uses tlhelp32;
  2.  
  3. type
  4. TByteArr = array of byte;
  5. function WriteProcessMemoryString(name_process:string; offset:DWORD; text_string:string; len:integer):boolean;
  6. var
  7. hProc, PID : DWORD;
  8. ipBase: ^dword;
  9. text:string;
  10. ArByte : TByteArr;
  11. write: SIZE_T;
  12. function GetPid(name_process: string): Integer;
  13. var
  14. hSnap: THandle;
  15. pe: TProcessEntry32;
  16. pid: DWORD;
  17. begin
  18. pe.dwSize := SizeOf(pe);
  19. hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  20. if Process32First(hSnap, pe) then
  21. while Process32Next(hSnap, pe) do
  22. if ExtractFileName(pe.szExeFile) = name_process then
  23. Result := pe.th32ProcessID;
  24. end;
  25. function StrToByte(const Value: String): TByteArr;
  26. var
  27. I: integer;
  28. begin
  29. SetLength(Result, Length(Value));
  30. for I := 0 to Length(Value) - 1 do
  31. begin
  32. Result[I] := ord(Value[I + 1]);
  33. end;
  34. end;
  35.  
  36. begin
  37. PID := GetPid(name_process);
  38. hProc:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  39. if hProc <> 0 then
  40. begin
  41. try
  42. ipBase:=ptr(offset);
  43. ArByte := StrToByte(text_string);
  44. WriteProcessMemory(hProc, ipBase, ArByte, len, write);
  45. Result := True;
  46. finally
  47. CloseHandle(hProc);
  48.  
  49. end;
  50. end;
  51.  
  52. end;
  53.  
  54. //Use so
  55. if WriteProcessMemoryString('Testxxx.exe', $01522F30, 'testtest', 8) = True then
  56. begin
  57. ShowMessage('OK!');
  58. end;
  59. //(process name, virtual offset, text, write length)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement