[C++]in eine datei schreiben

Tobias K.

Erfahrenes Mitglied
moin


ich hab heute aus langerweile den titel des kartenspiels solitär geändert. is ja auch nichts besonderes mit einem hex-editor.

nur das muss doch auch irgendwie mit c++ anzustellen sein!?
also wie such ich in einer exe datei nach einem bestimmten wert und schreibe an der stelle dann etwas anderes rein?
so wie ich das wie oben beschrieben von hand gemacht hab?

mit vc 6
und möglichst c++ und nicht c


mfg
umbrasaxum
 
ich hab heute aus langerweile den titel des kartenspiels solitär geändert.
dir muss ja extrem langweilig gewesen sein. :)
ein wunder, dass das programm trotzdem noch funktioniert. :rolleyes:

also eigentlich musst du die datei binär öffnen mit einem dateistrom, und dann untersuchst du jedes byte einzeln.
wenn z.b. der suchstring "solitaire" ist, dann vergleichst du jedes byte mit dem zeichen 's'. bei übereinstimmung prüfst du das nächste zeichen auf 'o', das nachfolgende auf 'l'. und immer so weiter. wenn alle zeichen übereinstimmen hast du an der stelle den suchstring gefunden. dann musst du dir nur noch die position des ersten zeichens merken und kannst etwas daran verändern - soviel zumindest zur theorie... :rolleyes:

aber in jedem fall würde ich dir davon abraten, ausführbare programme und binäre dateien auf diese weise zu verändern. dadurch macht man sich normalerweise die datei kaputt.
eine binäre datei besteht ja schliesslich aus befehlen für den prozessor, und wenn diese befehle auseinandergerissen werden, funktioniert das programm nicht mehr.
 
Solange die Länge der Zeichenketten oder die Anzahl Pixels von einer Bitmap oder Icon nicht verändert wird, gibt's (fast) keine Probleme!

Die Resource-Grabberprogramme machen ja (fast) das Gleiche!!!!!
 
so ein wunder ist das nicht, denn wie goela schon gesagt darf man nur die länge der zeichenkette nicht verändern.
zu deiner antwort:
wie ich nach dem string suche ist ja noch nicht einmal so das problem aber dann das merken der position da hab ich keinen plan wie ich das machen soll. ich hab auch schon mit text dateien gearbeitet nur nicht mit binären dateien.
ich hab jetzt nicht vor alle exe dateien auf meinem rechner zu ändern! ich wollte nur mal grundsätzlich wissen wie man sowas macht.


mfg
umbrasaxum

P.S.:
die langeweile kam dadurch das ich inner schule saß und mit meiner datenbank schon fertig war
 
das stimmt, aber bei ausführbaren anwendungen sind solche änderungen im allgemeinen etwas riskant.
wichtig ist dabei einfach nur, dass man sich an die richtlinien des pe-formates hält. dadurch wird es dann sogar möglich, daten an die anwendung anzuhängen, ohne die datei zu beschädigen. sowas wird beispielsweise bei selbstentpackenden archiven oder setups verwendet.

und ressourcen (wie z.b. icons oder grafiken) werden teilweise auch einfach hinten an die anwendung angehängt, wodurch nicht keine unmittelbare gefahr für das programm selbst entsteht.

zurück zum thema:
du durchsuchst einfach mit einer schleife die gesamte datei - byte für byte. bei jedem schleifendurchlauf zählst du eine variable hoch, und wenn du den suchstring gefunden hast, speicherst du diesen wert. damit hast du dann schon mal das offset von deinem wert in der binären datei. dann springst du wieder dahin zurück (mit der seek()-funktion) und bearbeitest diesen wert - wieder byte für byte.
nach der bearbeitung schliesst du die datei wieder.

wegen oben erwähnten gründen: ich kann nichts dafür, wenn was kaputt geht. ;)
 

Neue Beiträge

Zurück