Manuell auf externe Exe zugreifen und Header ändern
-
Was hast Du denn für eine Frage?
Lies Dir einfach die COFF-Specifikation durch, dann sollten sich Deine Fragen erübrigen...PS: Eine Datei liest man mit "ReadFile" ein...
-
hi!
Meine Frage ist, wie ich ein Handle zum erste byte des Files bekomme. Mit CreateFile klappt es scheinbar nicht, sonst hätte ich ja den dosHeader in der ExeFile gefunden. Muss ich wirklich erst das ganze File in nen buffer laden mit ReadFile und dann mit dem Buffer arbeiten?
-
weis du überhaupt was ein handle ist?
-
Ja, ein Steuerknüppel!
-
jo könnte mir bitte jemand bei meinem Problem helfen
-
TOubsi schrieb:
jo könnte mir bitte jemand bei meinem Problem helfen
Lerne erstmal ein paar grundlegende Sachen wie CreateFile, ReadFile und was Speicher eigentlich bedeutet...
-
ich weis was Speicher ist, aber war ja mal wieder klar, dass man hier keine vernünftige Antwort bekommt. Ich will doch nur das file on disc verändern und da scheint CreateFile doch kein falscher weg zu sein? Und ich habe auch bereits gefragt ob ich dann das ganze file mit ReadFile einlesen muss aber auch darauf bekomme ich ja keine Antwort -.- naja sry bin wohl mal wieder im falschen Forum gelandet. Dachte das ist das WinApi Forum, aber ich bin im "Nur Experten die die API und ihre Tücken auswendig können dürfen posten" Forum gelandet.
-
Du oeffnest eine Datei im Schreibmodus, gehst an die entsprechende Stelle und schreibst Daten. Danach die Datei schliessen. Die entsprechenden C-Funktionen sind fopen, fseek/ftell, fwrite und fclose. Windows hat bestimmt etwas aehnliches. Da du nichts lesen willst, brauchst du auch nicht ReadFile.
Das was du dort an Code geliefert hast, ist der absolute Bockmist. Ein Handle kann alles sein, meist ein Identifier fuer Betriebssystemressourcen. Das kann z.B. ein einfacher Integer sein. Casten ist da voellig falsch am Platz. Deine Probleme haben nichts mit der WinAPI zu tun, sondern mit deinem Verstaendnis vom Programmieren. Dir fehlen die Grundlagen. Einen String z.B. der Form "123" kann man auch nicht durch int i = (int)"123" in die Zahl 123 verwandeln.
-
Wenn Du es nicht selber lesem willst, sondern "direkt" Zugriff darauf haben willst, dann schau Dir "CreateFileMapping" an:
http://msdn.microsoft.com/en-us/library/aa366537
-
Dankeschön knivil und Jochen Kalmbach

Ich schaue mir die Funktionen gleich an!