Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hexreihe in einer Datei ändern.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.07.2018, 10:29 Uhr
Wurmi



Hallo zusammen.

Mein Name ist Sven, und ich habe ein kleines Problem mit einem bereits funktionierendem kleinen C-Programm.
Es ist eine Art Patcher. Es Öffnet eine bestimmte Datei, Sucht nach einer bestimmten Hexreihe, ändert diese ab und speichert die Datei.

Nun soll es aber mehrere Hexreihen abändern, weiß aber leider nicht wie ich das mache.

Hier mal der bisherige Code:


C++:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <functional>
#include <windows.h>
using namespace std;

int main()
{
    
int result;
  char oldname[] ="Datei.exe";
  char newname[] ="Datei_OLD.exe";
  result= rename( oldname , newname );
  if ( result == 0 )
    puts ( "File successfully renamed" );
  else
    perror( "Error renaming file" );
    
    ifstream::pos_type size;
    ifstream infile("sh3_OLD.exe", ios::in | ios::binary | ios::ate);
    ofstream outfile("sh3.exe", ios::out | ios::binary);
    if (infile.is_open()) {
        const char sequence[] = { 0x00, 0x35, 0x39, 0x2C, 0x36, 0x39, 0x30, 0x2C, 0x20, 0x32, 0x35, 0x30, 0x2C, 0x36, 0x39, 0x30, 0x2C, 0x20, 0x35, 0x35, 0x30, 0x2C, 0x36, 0x39, 0x30, 0x00 },   // Eindeutige Hexreihe der Original-Datei
                   bytes[]    = { 0x00, 0x35, 0x39, 0x2C, 0x39, 0x39, 0x39, 0x2C, 0x20, 0x32, 0x35, 0x30, 0x2C, 0x39, 0x39, 0x39, 0x2C, 0x20, 0x35, 0x35, 0x30, 0x2C, 0x39, 0x39, 0x39, 0x00 };   // In diese Hexreihe abändern
                              
        
        size = infile.tellg();
        char *memblock = new char[size];
        infile.seekg(0, ios::beg);
        infile.read(memblock, size);
        infile.close();
        
        
        const char* i = search(memblock, memblock + size, sequence, sequence + sizeof(sequence));

        if(i != memblock + size) {
            memcpy(memblock + (i - memblock), bytes, sizeof(bytes));
            for(size_t i = 0; i < size; i++) {
                outfile << memblock[i];
            }
        } else {
            cout << "Sequence not found!" << endl;
        }

        outfile.close();
        delete [] memblock;
    } else {
        cout << "Unable to open file." << endl;
    }
    

    system("PAUSE");
     return 0;
}



Wäre schön wenn mir Jemand dabei helfen könnte

Gruß, Sven

Dieser Post wurde am 13.07.2018 um 10:31 Uhr von Wurmi editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.07.2018, 21:44 Uhr
Hans
Library Walker
(Operator)


Hi,


Zitat:
Nun soll es aber mehrere Hexreihen abändern, weiß aber leider nicht wie ich das mache.

ich nehme mal an, der obige Code ist nicht von Dir, und Du hast auch keine Ahnung, was der genau macht, d.h. was die einzelnen Zeilen zu bedeuten haben, oder? - Wenn dem so ist, dann wende Dich doch erst mal an die Quelle, wo der Code her kommt, um Dir das alles noch einmal erklären zu lassen.
Ansonsten können wir Dir wohl auf die Sprünge helfen, wenn Du irgendwo nicht weiter kommst, aber entwickeln musst Du den weiteren Code schon selbst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 14.07.2018 um 21:44 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2018, 09:50 Uhr
ao

(Operator)


Was soll denn das werden? Ein Exe-File patchen? Wozu?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: