PE Datei neue Section hinzufügen, ausführen und zu Original Entry Point zurück



  • Hallo zusammen, das ist mein erster Post hier und ich hoffe, jemand kann mir aushelfen 🙂

    Also ich habe eine PE Datei in C++ eingelesen, eine neue Section hinzugefügt, meinen Code in die Section geschrieben und den Original Entry Point im "Optional Header" auf die Anfangsadresse meiner neuen Section gesetzt.

    char oep[] = OH->AddressOfEntryPoint;
    OH->AddressOfEntryPoint = SH[FH->NumberOfSections].VirtualAddress;
    char code[] = "\x01\x02\x03";
    char newjmp[] = "sollte zurück zum OEP springen";
    char newcode[ code_len + sizeof( newjmp ) ];
    
    memcpy( newcode, code, code_len );
    memcpy( newcode + code_len, newjmp, sizeof( newjmp ) );
    
    WriteFile( file, newcode, sizeof( newcode ), &dw, 0 );
    

    Wenn das Programm startet, beginnt es nun in meiner Section - soweit so gut.

    Wie kann ich das Programm jetzt aber nach dem Ausführen meines neuen Codes zur originalen Adresse springen lassen, so das es den originalen Code normal ausführt?

    MfG Manuel


Anmelden zum Antworten