Funktionszeiger??



  • Hallo ihr da draußen....
    Ich hab folgende Frage: Wie kann ich ohne ASM sondern nur mit C (oder C++)
    Eine Funktion umleiten also ich hab bisher folgendes:

    #include <stdlib.h>
    #include <stdio.h>
    
    typedef void (*FO)();
    
    void Function_One(){
    printf("Funktion Eins");
    }
    
    void Function_Two(){
    printf("Funktion Zwei");
    }
    
    //Überschreiben!
    void DetourFunction(){
    Function_One = (FO)Function_Two;
    }
    
    int main()
    {
        DetourFunction();
        Function_One
        return 0;
    }
    
    return 0;
    }
    
    Das funktioniert aber nicht, wie weise ich also der Funktion_One die Adresse von Funktion_Two zu??
    
    Danke im voraus!!
    
    mfg ASDASD. :D
    


  • Sry sind ein paar Fehler im Quellcode hier nochmal:

    #include <stdlib.h>
    #include <stdio.h>
    
    typedef void (*FO)();
    
    void Function_One(){
    printf("Funktion Eins");
    }
    
    void Function_Two(){
    printf("Funktion Zwei");
    }
    
    //Überschreiben!
    void DetourFunction(){
    Function_One = (FO)Function_Two;
    }
    
    int main()
    {
        DetourFunction();
        Function_One();
        return 0;
    }
    


  • Vergesst es ich verwende lieber asm is wesentlich leichter!



  • So schwer ist es nicht!

    #include <stdlib.h>
    #include <stdio.h>
    
    typedef void (*FO)();
    
    void Function_One(){
    printf("Funktion Eins");
    }
    
    void Function_Two(){
    printf("Funktion Zwei");
    }
    
    int main()
    {
        FO pfun;
    
        pfun = &Function_One;
        pfun();
    
        pfun = &Function_Two;
        pfun();
    
        return 0;
    }
    

Anmelden zum Antworten