| Autor | 
Beitrag | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 20:59 
 
Findet bei mir 37 Einträge    
 
 | 
 | 
F34r0fTh3D4rk 
        
 
Beiträge: 5284 
Erhaltene Danke: 27 
 
Win Vista (32), Win 7 (64) 
Eclipse, SciTE, Lazarus 
 | 
Verfasst: Fr 04.02.05 20:59 
 
ich finde keinen beitrag weil die suche bei mir nicht mehr geht     
 
 | 
 | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 21:17 
 
	  | Zitat: | 	 		  Orginal geschrieben von Obstkutsche
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
  				 | 									var     Read: DWORD;     OldProtect: DWORD;     Buf: Pointer;    begin      if VirtualProtectEx(Prozess, Adresse, Groesse, PAGE_EXECUTE_READWRITE, OldProtect) then     begin        getmem(Buf, Groesse);      try          if ReadProcessMemory(Prozess, Adresse, Buf, Groesse, Read) then        if Read = Groesse then        begin             end;      finally          VirtualProtectEx(Prozess, Adresse, Groesse, OldProtect, OldProtect)       freemem(Buf);      end;     end;    end;					 				 | 			 		 	  
  | 	  
Na dann will ich mal nicht so sein    
 
 | 
 | 
F34r0fTh3D4rk 
        
 
Beiträge: 5284 
Erhaltene Danke: 27 
 
Win Vista (32), Win 7 (64) 
Eclipse, SciTE, Lazarus 
 | 
Verfasst: Fr 04.02.05 21:20 
 
was kommt bei spass haben rein und welcher wert (also von welcher speicheradresse) wird jetzt an welche variable übergeben ? 
 
 | 
 | 
F34r0fTh3D4rk 
        
 
Beiträge: 5284 
Erhaltene Danke: 27 
 
Win Vista (32), Win 7 (64) 
Eclipse, SciTE, Lazarus 
 | 
Verfasst: Fr 04.02.05 21:21 
 
achso spass haben, da kommt rein was man damit macht und der rest ist einsetzen oda ?
 kannst mal n beispiel geben, was muss zb bei größe rein ?
 
 der titel das programms zum testen ist bei mir galgenmännchen, die adresse ist:
 
 45FCCC
 
 Den Wert möchte ich gerne auslesen 
 
 | 
 | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 22:35 
 
Ich hab mal vor ein paar Monaten die Function gebraucht. ich habs damals irgendwie hingekriegt, weiss aber noch das dass ein ziemliches gewurschtel war. Ich glaub so in der Richtung:
 
		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
  				 | 									procedure TForm1.Button1Click(Sender: TObject); var fensterhandle, processhandle : THandle;     ProcessID : Cardinal;     puffer : array of byte;     read : cardinal;     i : integer; begin  fensterhandle := FindWindow(nil, 'Project1');  Getwindowthreadprocessid(Fensterhandle, @Processid);  processhandle := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);  setLength(puffer, 4);   readprocessmemory(processhandle, ptr($BF4A78),puffer, 4, read);  if read = 4 then   begin   for i := 0 to length(puffer) do    begin     memo1.lines.add(inttostr(puffer[i]));  end;  end; end; end;					 				 | 			 		 	  
*ungetestet* bin mir auch absolut nicht mehr sicher.     
 
  Zuletzt bearbeitet von Karlson am Fr 04.02.05 22:41, insgesamt 1-mal bearbeitet
 | 
 | 
uall@ogc 
        
 
Beiträge: 1826 
Erhaltene Danke: 11 
 
Win 2000 & VMware 
Delphi 3 Prof, Delphi 7 Prof 
 | 
Verfasst: Fr 04.02.05 22:39 
 
1. um readprocessmemory muss kein try, lieber checken ob die anzahl der bytes die gelesen wurden (letzer parameter) mit denen übereinstimmt die gelesen werden sollten
 
 2. $BF4A78 liegt ausserhalb des speicherbereiches der EXE, wird somit sehr wahrscheinlich mit HeapAlloc freigemacht und ist deshalb auch bei unterschiedlichen system anders (letzen 2 bytes werden gleich sein, da nur die ersten die page angeben) 
 
 | 
 | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 22:43 
 
okay. Hab das mal soweit geändert. merci!
 Preisfrage die ich mich schon immer gefragt habe: Wenn unsere Adresse ausserhalb dem Bereich der Exe liegt (woran siehst du das überhaupt?    ), wie kann man diese dann überhaupt mit einem Trainer ansprechen?  
 
 | 
 | 
uall@ogc 
        
 
Beiträge: 1826 
Erhaltene Danke: 11 
 
Win 2000 & VMware 
Delphi 3 Prof, Delphi 7 Prof 
 | 
Verfasst: Fr 04.02.05 22:46 
 
normalerweise (bei 99.99% aller EXE dateien) ist die standart base adresse bei 0x00400000 und dein BF ist weit davon weg ;> so groß kann die exe nicht sein 
 
 | 
 | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 22:52 
 
okay, klingt logisch...und die andere Frage?    
 
 | 
 | 
uall@ogc 
        
 
Beiträge: 1826 
Erhaltene Danke: 11 
 
Win 2000 & VMware 
Delphi 3 Prof, Delphi 7 Prof 
 | 
Verfasst: Fr 04.02.05 22:55 
 
irgendwo gibt es im speicher der EXE eine variable die auf den den allocierten speicher zeigt, oder api hook auf HeapAlloc etc. blub bla halt, 1000 wege sehr kompliziert und lange zu erklären 
 
 | 
 | 
Karlson   
        
 
Beiträge: 2088 
 
 
 
 | 
Verfasst: Fr 04.02.05 23:33 
 
mkay...dann wirds doch etwas schwerer das Spiel zu manipulieren    
 
 | 
 | 
F34r0fTh3D4rk 
        
 
Beiträge: 5284 
Erhaltene Danke: 27 
 
Win Vista (32), Win 7 (64) 
Eclipse, SciTE, Lazarus 
 | 
Verfasst: Sa 05.02.05 12:12 
 
ok wenn ich diese procedure nehme kommt in mein memo sowas:
 
		                                                          Quelltext                                	 	 
der wert 0 ist korrekt aber was soll der rest ?
 ich möchte schließlich nur einen integer auslesen um da nen bot für zu machen   
also der 1. wert ist immer der gesuchte ?
 ich hab das mal so gemacht:
 		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
  				 | 									function ReadProcess(Title: string; Address: integer): integer; var  winhandle, processhandle : THandle;  ProcessID : Cardinal;  puffer : array of byte;  read : cardinal; begin  winhandle := FindWindow(nil, pchar(Title));  Getwindowthreadprocessid(winhandle, @Processid);  processhandle := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);  setLength(puffer, 4);   readprocessmemory(processhandle, ptr(Address),puffer, 4, read);  if read = 4 then   begin     result:= puffer[0];   end; end;					 				 | 			 		 	  
aber da kommt völliger müll raus, warum ?
 Moderiert von  raziel: Beiträge zusammengefasst 
 
 | 
 | 
uall@ogc 
        
 
Beiträge: 1826 
Erhaltene Danke: 11 
 
Win 2000 & VMware 
Delphi 3 Prof, Delphi 7 Prof 
 | 
Verfasst: Sa 05.02.05 12:33 
 
		                                                          Delphi-Quelltext                                	 															1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
  				 | 									function ReadProcess(Title: string; Address: integer): integer;    var     winhandle, processhandle : THandle;     ProcessID : Cardinal;     buffer : integer;     read : cardinal;    begin      winhandle := FindWindow(nil, pchar(Title));      Getwindowthreadprocessid(winhandle, @Processid);      processhandle := OpenProcess(PROCESS_ALL_ACCESS, false, ProcessId);      if processhandle > 0 then   begin      readprocessmemory(processhandle, pointer(Address),@buffer, sizeof(buffer), read);        if read = sizeof(buffer) then          result := buffer else result := 0;       closehandle(processhandle);   end; end;					 				 | 			 		 	   
 
 | 
 | 
F34r0fTh3D4rk 
        
 
Beiträge: 5284 
Erhaltene Danke: 27 
 
Win Vista (32), Win 7 (64) 
Eclipse, SciTE, Lazarus 
 | 
Verfasst: Sa 05.02.05 12:39 
 
oh danke (hab ich wohl wieder etwas geschlampt     )
 funzt perfekt danke, der meister hats mal wieder hinbekommen     
 
 | 
 | 
Kraut 
Hält's aus hier
 
Beiträge: 2 
 
Win XP 
 
 | 
Verfasst: Mi 08.03.06 14:00 
 
Der Link funktioniert nicht mehr =( 
 
 | 
 |