C anweisung in C++ ?



  • ich habe diese zeile aus einem C-programm was sonst funktioniert und komme einfach nicht weiter das in C++ zu tranferieren:

    func=(void*) &data; /*adresse des Arrays zuweisen - nun kann man es ausführen*/
    

    wie weise ich bitte func die adresse von data zu!? (ist ein array (data.h) das einen shellcode enthält)



  • Ich glaube, ich würde es so probieren.

    typedef void functype();
    func=reinterpret_cast<functype*>(&data);
    


  • volkard schrieb:

    Ich glaube, ich würde es so probieren.

    typedef void functype();
    func=reinterpret_cast<functype*>(&data);
    

    der compiler gibt zwar keinen fehler, aber wenn ichs ausführe stürzt es ab 😞


  • Administrator

    Die Frage ist:
    Was zur Hölle willst du überhaupt machen? Was ist data ? Was ist func ? Was machst du danach mit func ?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html

    Grüssli



  • Dravere schrieb:

    Die Frage ist:
    Was zur Hölle willst du überhaupt machen? Was ist data ? Was ist func ? Was machst du danach mit func ?
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html

    Grüssli

    Hat er ausreichend gesagt, finde ich. Er hat Maschinencode in einem char[] und will den ausführen.

    //main.c
    char main[] = {
    0xE8, 13, 0, 0, 0, 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r',
    'l', 'd', '!', '\n' , 0x59, 0xB8, 4, 0, 0, 0, 0xBB, 1, 0, 0, 0,
    0xBA, 13, 0, 0, 0, 0xCD, 0x80, 0xB8, 1, 0, 0, 0, 0xBB, 0, 0, 0,
    0, 0xCD, 0x80 };
    

  • Administrator

    volkard schrieb:

    Hat er ausreichend gesagt, finde ich. Er hat Maschinencode in einem char[] und will den ausführen.

    Jein. Shellcode schön und gut, nur was für Shellcode? Als was hat er func deklariert? Womöglich will er noch irgendwelche Parameter übergeben oder das ganze noch über eine Memberfunktion laufen lassen oder irgendwelche solche seltsamen Ideen 😉

    Nur mit den Informationen, welche er uns gegeben hat, kann man ihm nicht sehr weit helfen.

    Grüssli



  • Ich seh das so wie Dravere. Im ersten Post steht einfach zu wenig. Zb fehlte die Info, wie sich das Problem äußert.

    WhiteLion schrieb:

    der compiler gibt zwar keinen fehler, aber wenn ichs ausführe stürzt es ab

    Aha!

    Naja, mal davon abgesehen, dass das Vorhaben höchst fragwürdig ist ... Du solltest es vielleicht mit einem extern "C" Funktionszeiger probieren. Ich meine, wenn's der C Compiler schon gefressen hatte und funktionierte, muss es auch in C++ klappen und das mit dem extern "C" ist der einzige Unterschied, der mir dazu einfällt.

    extern "C" {
    typedef void c_func_type();
    }
    
    :
    
    void hack() {
      c_func_type* fptr = reinterpret_cast<c_func_type*>(data);
    }
    

    (Angabe ohne Gewähr)



  • Aber es fehlt wirklich noch die Info, was es für ein Funktionszeiger sein soll. Bisher haben wir ja nur geraten!


Anmelden zum Antworten