Anti Debug



  • Hallo ich beschäftige mich im moment etwas mit Reverse Engineering jetzt wollte ich mir ein kleines Programm machen mit einer Anti Debug Funktion.

    Wenn ich den Debugger starte und dann mein Programm starte dann funktioniert alles und die MessageBox "Debugger wurde gestartet" wird aufgerufen.

    Aber angenommen jemand läd das Programm dann mit dem Debugger und fängt an es zu starten dann funktioniert ja meine Funktion nicht mehr.

    Da sich da dann das Fenster nicht mehr ollydbg heisst sondern z.b.
    ollydbg - test.exe

    Gibt es irgendeine Funktion mit der das Programm seinen namen selbst prüfen kann ?

    Weil dann könnte man das ja anpassen ....

    #include <windows>
    #include <iostream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    bool win;
    
    win = FindWindow(0,"ollydbg");
    
                    if (win == true)
                    {
                    MessageBox(0,"Debugger wurde gestartet","Error",0);
                    }
    
                    else
                    {
                      MessageBox(0,"ok","ok",0);
                    }
    
    return 0;
    }
    


  • argv[0]



  • Fellhuhn schrieb:

    argv[0]

    Ist aber soweit ich weiss nicht immer eindeutig, was da steht (ob der ganze Pfad, oder nur der Name des Programms).



  • Was hindert dich denn daran, erinfach nur zu suchen, ob der fragliche string ("ollydbg") in dem fenstertitel vorkommt (string::pos - oder so)?

    Abgesehen davon ist es recht sinnlos nur nach fenstern zu suchen, die so heißen, wie ein debugger.
    Erstens gib es mehrere, 2. dann verändert man eben den string nach dem su suchst (notfalls, halt indem man die debugger Anwendung verändert - und sei es nur die string ressource (oder das entsprechende stück im const-segment der exe) die den Fenstertitel enthält.



  • Wie soll ich den da anfangen ?

    Wie kann ich überprüfen ob z.b. der erste Buchstabe oder so in dem Fenster namen vorkommt o_O



  • ollydbg schrieb:

    Wie soll ich den da anfangen ?

    Wie kann ich überprüfen ob z.b. der erste Buchstabe oder so in dem Fenster namen vorkommt o_O

    EnumWindows, std::string::find
    falsches forum übrigens.



  • ollydbg schrieb:

    Wie soll ich den da anfangen ?

    Wie kann ich überprüfen ob z.b. der erste Buchstabe oder so in dem Fenster namen vorkommt o_O

    Also bevor du dich mit Reverse Engineering beschäftigst, solltest du zuerst mal die Grundlagen beherrschen..

    string-Manipulationen sind absolut essentiell.



  • Mit welchen Themen sollte man denn da Anfangen zu lernen.

    Also was wären z.b. die Grundlagen vom Reverse Engineering ?



  • @ollydbg

    Alkohol drinken, Assembler, Compilerbau, Systemsoftware (Aufbau von Betriebssystemen), Prozessorarchitektur, ... 😉



  • Also den ersten Punkt kann ich glaub ich ganz einfach bewältigen xD

    Dann werd ich mich mal mit den anderen Sachen beschäftigen.



  • Wenn du es verhindern bzw erschweren willst, das jemand an deinem Programm zur Laufzeiter herumfuhrwerkt, solltest du mal nach "Code Obfuscating" googlen.


Anmelden zum Antworten