WriteProcessMemory würde schon funktionieren, macht aber im eigenen Prozess keinen Sinn. Du kannst einfach mit Zeigern arbeiten z.b.
PByte($00401234)^ := $90;
um ein NOP zu setzen. Dementsprechend kannst du auch mit
PDWord($00401337)^ := $008457A4;
die Adresse patchen.
Dein erster Versuch ist fehlgeschlagen, da du vermutlich die Memory Protection nicht geändert hast. Du musst bevor du irgendwas patchst mit
VirtualProtect das PAGE_EXECUTE_READWRITE Flag setzen, damit du in diesem Bereich schreiben kannst.