Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 08:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Help!!!] Delphi + Readprocessmemory

Discussion on [Help!!!] Delphi + Readprocessmemory within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2006
Posts: 70
Received Thanks: 6
[Help!!!] Delphi + Readprocessmemory

I cant seem to get read process memory working in delphi i dont know why at all either, ive googled it for like 2 hours the other night and know luck. so i figured ima try here

this is my source currently
thanks in advance for help

PHP Code:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsRegistrytlhelp32StdCtrls;

type
  TForm1 
= class(TForm)
    
Label1TLabel;
    
procedure FormCreate(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;
  
cFolderstring;
  
PidPidhandleNewValueDataInteger;
  
AddressWrittenCardinal;

Const
  
process 'conquer.exe';

implementation

{$R *.dfm}

// Get Process ID
//  Example
// Pidhandle := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
function GetID(Const ExeFileNamestring; var ProcessIdinteger): boolean;
var
  
ContinueLoopBOOL;
    
FSnapshotHandleTHandle;
  
FProcessEntry32TProcessEntry32;
begin
  result 
:= false;
    
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS0);
    
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  
ContinueLoop := Process32First(FSnapshotHandleFProcessEntry32);
  while 
integer(ContinueLoop) <> do begin
    
if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)
       or (
StrIComp(FProcessEntry32.szExeFilePChar(ExeFileName)) = 0)  then begin
        ProcessId
:= FProcessEntry32.th32ProcessID;
         
result := true;
       break;
    
end;
      
ContinueLoop := Process32Next(FSnapshotHandleFProcessEntry32);
  
end;
    
CloseHandle(FSnapshotHandle);
end;

// Example
//  cFolder:=(GetRegistryData(HKEY_LOCAL_MACHINE,'\software\valve\steam\', 'InstallPath'));
// ShowMessage(sFolder+'\steamapps\'+Edit1.text+'\insurgency\insurgency\')
function GetRegistryData(RootKeyHKEYKeyValuestring): variant;
var
  
RegTRegistry;
    
RegDataTypeTRegDataType;
  
DataSizeLeninteger;
  
sstring;
label cantread;
begin
  Reg 
:= nil;
  try
    
Reg := TRegistry.Create(KEY_QUERY_VALUE);
    
Reg.RootKey := RootKey;
    if 
Reg.OpenKeyReadOnly(Keythen begin
      
try
        
RegDataType := Reg.GetDataType(Value);
        if (
RegDataType rdString) or
           (
RegDataType rdExpandStringthen
          Result 
:= Reg.ReadString(Value)
        else if 
RegDataType rdInteger then
          Result 
:= Reg.ReadInteger(Value)
        else if 
RegDataType rdBinary then begin
          DataSize 
:= Reg.GetDataSize(Value);
          if 
DataSize = -1 then goto cantread;
          
SetLength(sDataSize);
          
Len := Reg.ReadBinaryData(ValuePChar(s)^, DataSize);
          if 
Len <> DataSize then goto cantread;
          
Result := s;
        
end else
cantread:
          
raise Exception.Create(SysErrorMessage(ERROR_CANTREAD));
      
except
        s 
:= ''// Deallocates memory if allocated
        
Reg.CloseKey;
        
raise;
      
end;
      
Reg.CloseKey;
    
end else
      
raise Exception.Create(SysErrorMessage(GetLastError));
  
except
    Reg
.Free;
    
raise;
  
end;
  
Reg.Free;
end;



procedure TForm1.FormCreate(SenderTObject);
begin
Address 
:= $038506C0//
    
NewValue := 1;    //
      
Data := 4;      //
      
Pidhandle := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
    
ReadProcessMemory(PidhandlePointer(Address), @NewValueDatanil);
closehandle(Pidhandle);

label1.Caption:=
end;
end
redskull010101 is offline  
Old 11/02/2008, 00:51   #2
 
link's Avatar
 
elite*gold: 1
Join Date: Jul 2005
Posts: 553
Received Thanks: 451
Quote:
Pidhandle := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
Pid is not initialized.
At first you have to call the GetID-Function to obtain the PID of the Process elsewise you will not get a correct Handle when calling OpenProcess.

Quote:
GetID(OFFSET process, OFFSET Pid)
Or whatever in Delphi...
link is offline  
Reply


Similar Threads Similar Threads
[Delphi] Readprocessmemory() mit dezimal?
06/12/2010 - General Coding - 3 Replies
Hallo, ich hätte noch eine frage. ReadProcessMemory(Pidhndl,ptr(BaseAddr), @AtmTargetPointer, Data, written); readprocessmemory gibt mir 0 als ausgabe. Ich verwende als Baseaddr eine Dezimalzahl. Nun meine Frage : Kann man mit readprocessmemory auch Dezimale addressen auslesen? Ohne das ''$'' vor der addresse? -298
[DELPHI&METIN]Wie sind die Delphi Befehle für einen Bot?
03/07/2010 - General Coding - 3 Replies
Hallo liebe com, ich habe mal eine Frage: Ich möchte einen Metin Bot in Delphi schreiben aber ich weiß nicht die Befehle für eine bestimmte Taste senden etc. könnt ihr mir die pls sagen oder per pn geben MfGGGGGG
[delphi] ReadProcessMemory
10/30/2009 - General Coding - 1 Replies
Hey guys, I don't know how to use ReadProcessMemory to get a string. Code: ReadProcessMemory(PHandle,Pointer($3B98D104),@tem ,4,Read); ...:= string(tem); This gives me an error
[Help] Delphi + ReadProcessMemory
11/05/2008 - CO2 Programming - 7 Replies
I cant seem to get read process memory working in delphi i dont know why at all either, ive googled it for like 2 hours the other night and know luck. so i figured ima try here this is my source currently thanks in advance for help unit Unit1; interface



All times are GMT +2. The time now is 08:13.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.