![]() |
Re: EXE Patchen -- Error: verletzt untere Grenzen
Zitat:
Zitat:
|
Re: EXE Patchen -- Error: verletzt untere Grenzen
Also meinst dz dami, das das hier
Zitat:
Wenn ja, stimmt nicht. Ich habe 32 Bit Windows und das Programm is auch 32 Bit Noch ne andere Frage... es bestünde auch die Möglichkeit die stelle einfach zu Noopen (also mit NOP's zu füllen) Dazu müsste ich AB! Adresse 004452A8 7 NOP's einfügen... Ich hab das mal so versucht
Delphi-Quellcode:
Ich dachte mir, anstelle alles kompliziert in einem schritt einzutragen, mache ich das einfach hintereinander
dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
UpdateOffset(lpBuffer, dwFileOffset, $90909090); //LoadFile(opendialog1.FileName, lpBuffer, dwFileSize); dwFileOffset := RvaToFileOffset(lpBuffer, $004452AC); UpdateOffset(lpBuffer, dwFileOffset , $909090); Wenn ich den code schlussendlich ausführe, werden zwar die NOP's eingetragen ABER! a) nur 5 stat 7 b) der unetere Code wird entfernt also alles ab der einfüge Adresse verschwindet... was bei OllyDBG nicht der fall ist Ich bin echt ratlos... |
Re: EXE Patchen -- Error: verletzt untere Grenzen
Ich merke gerade, SirThornberry's Einwurf war nicht ganz korrekt. Die Speicheradresse ist DWord nur der Wert eben nicht.
Zitat:
Zitat:
|
Re: EXE Patchen -- Error: verletzt untere Grenzen
Also muss ich die Procedure für Int64 abändern richtig?
Würde das so funktionieren?
Delphi-Quellcode:
procedure UpdateOffset(var lpBuffer: Pointer; dwFileOffset: Cardinal; Value: Int64); overload;
begin PDWORD(Cardinal(lpBuffer) + dwFileOffset)^ := Value; end; |
Re: EXE Patchen -- Error: verletzt untere Grenzen
Du musst dann aber entsprechend nach PInt64 statt nach PDWORD casten.
|
Re: EXE Patchen -- Error: verletzt untere Grenzen
Liste der Anhänge anzeigen (Anzahl: 1)
Ooops stimmt
also so??
Delphi-Quellcode:
/////////////Edit
procedure UpdateOffset(var lpBuffer: Pointer; dwFileOffset: Cardinal; Value: Int64); overload;
begin PInt64(Cardinal(lpBuffer) + dwFileOffset)^ := Value; end; Ich hab den code mal an die anderen Proceduren angehängt (also unten drunter) Danach habe ich mit diesem Code eingelesen
Delphi-Quellcode:
Jedoch hat es nur teilweise geklappt:
dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8); // Adresse einlesen
UpdateOffset(lpBuffer, dwFileOffset, $01004B212405C6); // Neues Offset Die bytes wurden richtig eingetragen sprich an der richtigen stelle aber es hat sonst irgendwas verschoben... Aber seht selbst Oben im bild vorher unten nachher Es sollte ja nur die zeile bei adresse 004452A8 updaten, statdessen hat es sonst was gemacht :) ich hoffe ihr seht den fehler den ich gemacht habe... |
Re: EXE Patchen -- Error: verletzt untere Grenzen
Dieses Bild und das aus dem ersten Beitrag zeigen dasselbe!?
|
Re: EXE Patchen -- Error: verletzt untere Grenzen
Ja grunsätzlich schon
aber diesmal hab ich es noch n bisschen besser markiert.... Aber ich kann mir nicht erklären wo der fehler liegt... Habt ihr ne idee? |
Re: EXE Patchen -- Error: verletzt untere Grenzen
:gruebel:
Jetzt ist es Int64 = 64bit = 8 Byte Zitat:
01 00 4B 21 24 05 C6 - Das sind nur 7 Byte. Eventuell aufteilen in 4, 2 und 1 Byte? |
Re: EXE Patchen -- Error: verletzt untere Grenzen
Ich weiss nicht wie ich das aufteilen soll....
Bin in diesem gebiet noch totaler anfänger :( Oder wird so aufgeteilt?
Delphi-Quellcode:
dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
UpdateOffset(lpBuffer, dwFileOffset, $C6); dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8); UpdateOffset(lpBuffer, dwFileOffset, $2405); dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8); UpdateOffset(lpBuffer, dwFileOffset, $01004B21); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz