Exe öffnen und Bytes anhängen



  • Hallo ich hätte eine kleine Frage an euch.
    Ich versuche ein paar Bytes an eine bestimmte EXE-Datei anzuhängen, aber bei mir klappt das nicht ganz da die EXE die ich selbst compiliert habe und bytes hinzufügen will kommt beim
    if( fIn.peek() == EOF )
    Immer rein und dann kann man die Datei nicht in ein Array laden.

    Das ganze passiert nach dem 27. Byte immer.

    Ich habe es bereits an einer anderen kleineren Exe probiert und es hat geklappt.

    fIn.open( "in.exe", ios_base::in );
    while...
    if( fIn.peek() == EOF )
    break;
    CurrentByte = fIn.get();
    if( BytesWritten % 4 == 0 && BytesWritten >= 4 )
    fOut << ",\n\t";
    else
    fOut << ",  ";
    fOut << "0x" << hex << CurrentByte;
    ++BytesWritten;
    

    Gibt es vielleicht eine bessere Methode mein Ziel zu erreichen?
    Bin für alles offen.

    Vielen Dank. 🙂



  • Hallo BlueBytes,

    Stichwort: Datei im Binärmodus öffnen (ios::binary)



  • BlueBytes schrieb:

    Gibt es vielleicht eine bessere Methode mein Ziel zu erreichen?
    Bin für alles offen.

    Vielleicht solltest du uns ein mal erklären, warum genau du das machen willst. Wozu werden diese Extra-Bytes benötigt?



  • Mein Ziel ist es das meine Exe eine andere Checksum bekommt.

    Aber nungut ich habe das Problem gelöst, wie Th69 gesagt hat lag es an ios::binary 🙂

    Hier noch ein Code für Leute die danach mal suchen werden 😉
    Um das ganze wieder richtig zu speichern hat ich auf ifstream zurückgegriffen.

    [code="cpp"]#include <fstream.h>
    char * buffer;
    long size;

    ifstream infile ("in.exe",ifstream::binary);
    ofstream outfile ("new.exe",ofstream::binary);
    infile.seekg(0,ifstream::end);
    size=infile.tellg();
    infile.seekg(0);
    buffer = new char [size];
    infile.read (buffer,size);
    buffer[size + 1] = '1';
    outfile.write (buffer,size+1);
    delete[] buffer;
    outfile.close();
    infile.close();


Anmelden zum Antworten