Autor Beitrag
DOCa Cola
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Vista x64
D2007
BeitragVerfasst: Mi 31.05.06 18:20 
Meine frage bezieht sich auf das Spieletrainer erstellen tutorial

dort ist in den weiteren kommentaren folgendes gepostet worden

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var s: pchar;
begin
  s:=#144#144#144#144// buffer aus dezimalwerten erstellen, darf aber keine #0 drin vorkommen (wegen pchar)
  WriteProcessMemory(HandleWindow,ptr($4609F0),s,length(s),write);


nun muss ich aber genau den hexwert 00 an ein programm schicken. wie kann ich das erreichen?
wenn ich ein pchar "'Test'+#00" an meine WriteProcessMemory funktion übergebe, schneidet er direkt nach 'Test' ab und das 00 wird nicht mehr in den speicher geschrieben...
Ydobon
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42



BeitragVerfasst: Mi 31.05.06 18:47 
WriteProcessMemory interessiert sich nicht für das Nullbyte, es will einfach eine Adresse und verwendet von der ab die angegebene Anzahl von Bytes. Length liefert aber nur die Länge bis zu #0 und damit zu wenig. Falls es wirklich nur das letzte Byte ist, leg bei Lenght noch eins drauf. Ansonsten nimm nicht unbedingt PChar, Strings haben z.B. eine eigene Längenzählung, für solche Fälle scheint auch PByteArray recht gut geeignet zu sein.
DOCa Cola Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Vista x64
D2007
BeitragVerfasst: Mi 31.05.06 18:53 
stimmt, du hast recht, daran habe ich nicht gedacht, danke! es handelt sich tatsächlich immer nur um das letzte byte

gruß DOCa Cola
cherrymoon69
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 19.02.08 16:39 
und was lann ich tin wenn die beiden letzten bytes 00 sind?

wie müßte dann der code aussehen?


danke.