Ganz generell vielleicht noch zum "Memory Hacking". Hier zwar nicht so wichtig, weil der Code direkt in der EXE liegt, aber wenn du mal eine Anwendung hast, die DLLs nachläd und du in diese DLLs schreiben willst, dann immer relative Adressen der Form:
ImageBase + Offset
verwenden. Achso und wenn du wirklich nur einzelne Opcodes ändern willst, ist anstelle von CopyMemory der direkte Zugriff ganz hilfreich:
Delphi-Quellcode:
if VirtualProtect(Pointer($0046A4A8), 2, PAGE_EXECUTE_READWRITE, @dwOldDestProtect) then
try
PByte($0046A4A8 + $00)^ := $EB;
PByte($0046A4A8 + $01)^ := $07;
finally
VirtualProtect(Pointer($0046A4A8), 2, dwOldDestProtect, nil);
end;
Dann musst du nicht groß mit Arrays rumbasteln und kannst bei eigenen Records sogar ganze Datenstrukturen bequem schreiben. Ich hatte vor einiger Zeit mal ein kleines Tutorial zum Thema verfasst:
http://opcodez.wordpress.com/2010/09...king-teil-1-5/