fork download
  1. unit MemoryDeclaration;
  2.  
  3. interface
  4.  
  5. uses Addresses, Classes, SysUtils, Windows, Messages, Variants, Dialogs;
  6.  
  7. function ReadInteger(ProcessID, Address: Cardinal): Cardinal;
  8. function ReadString(ProcessID, Address: Integer): String;
  9. function ReadByte(ProcessID, Address: Cardinal): Byte;
  10. function BLPosition(ProcessID: Cardinal): Integer;
  11. procedure WriteInteger(IDProcess, Address: Integer; Value: Integer);
  12. procedure WriteString(IDProcess, Address: Integer; Value: String);
  13. procedure WriteByte(IDProcess, Address: Integer; Value: Byte);
  14.  
  15. implementation
  16.  
  17. function ReadInteger(ProcessID, Address: Cardinal): Cardinal;
  18. var
  19. tProc: THandle;
  20. NBR: Cardinal;
  21. value: integer;
  22. begin
  23. tProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
  24. ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR);
  25. CloseHandle(tProc);
  26. Result := value;
  27. end;
  28.  
  29. function ReadByte(ProcessID, Address: Cardinal): Byte;
  30. var
  31. tProc: THandle;
  32. NBR: Cardinal;
  33. value: Byte;
  34. begin
  35. tProc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
  36. ReadProcessMemory(tProc, Ptr(Address), @value, 1, NBR);
  37. CloseHandle(tProc);
  38. Result := value;
  39. end;
  40.  
  41. function ReadString(ProcessID, Address: Integer): String;
  42. var
  43. NB : LongWord;
  44. Temp : ARRAY [1..255] OF Byte;
  45. I : Byte;
  46. IDProcess : Cardinal;
  47. begin
  48. IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID);
  49. Result := '';
  50. ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
  51. for I := 1 to 255 do
  52. begin
  53. if ((Temp[i] = 0) or (Temp[i] = $0F)) then
  54. Break;
  55. Result := Result + Chr(Temp[i]);
  56. end;
  57. end;
  58.  
  59. function BLPosition(ProcessID: Cardinal): Integer;
  60. var
  61. i,id_battle,id:integer;
  62. begin
  63. if ReadInteger(ProcessID, Addresses.c_Status) = 8 then
  64. begin
  65. id:=ReadInteger(ProcessID, addresses.p_Id);
  66. for i:=0 to 1299 do
  67. Begin
  68. id_battle:=ReadInteger(ProcessID, Addresses.bl_Start + i*Addresses.bl_StepCreatures);
  69. if id_battle=ID then
  70. Begin
  71. Result :=i;
  72. end;
  73. end;
  74. end
  75. else
  76. begin
  77. Result := -1;
  78. end;
  79. end;
  80.  
  81. procedure WriteInteger(IDProcess, Address: Integer; Value: Integer);
  82. var
  83. THandle: Integer;
  84. e: DWORD;
  85. begin
  86. THandle := OpenProcess(PROCESS_ALL_ACCESS, False, IDProcess);
  87. WriteProcessMemory(THandle, Ptr(Address), @Value, 4, e);
  88. CloseHandle(THandle);
  89. end;
  90.  
  91. procedure WriteString(IDProcess, Address: Integer; Value: String);
  92. var
  93. THandle: hWnd;
  94. e: DWORD;
  95. begin
  96. THandle := OpenProcess(PROCESS_ALL_ACCESS, False, IDProcess);
  97. WriteProcessMemory(THandle, Pointer(Address), PChar(Value), Length(Value), e);
  98. CloseHandle(THandle);
  99. end;
  100.  
  101. procedure WriteByte(IDProcess, Address: Integer; Value: Byte);
  102. var
  103. THandle: hWnd;
  104. e: DWORD;
  105. begin
  106. THandle := OpenProcess(PROCESS_ALL_ACCESS, False, IDProcess);
  107. WriteProcessMemory(THandle, Pointer(Address), PByte(Value), 1, e);
  108. CloseHandle(THandle);
  109. end;
  110.  
  111. end.
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cs(1,6): error CS0116: A namespace can only contain types and namespace declarations
prog.cs(5,6): error CS1041: Identifier expected
prog.cs(5,15): error CS8025: Parsing error
Compilation failed: 3 error(s), 0 warnings
stdout
Standard output is empty