Strings in ASM



  • Hallo ich beschäftige mich im moment ein wenig mit Reverse Engineering.

    Ich hab mir folgendes Programm in C++ geschrieben.

    //---------------------------------------------------------------------------
    #include <iostream>
    using namespace std;
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    bool pruefe;
    bool test;
    
    test = true;
    
            if (test == true)
            {
            MessageBox(0,"Error","Error",1);
            Close();
            }
    
    pruefe = FileExists("ssdfsdf.txt");
    
            if (pruefe == true)
            {
            MessageBox(0,"Datei existiert","Datei existiert",0);
            }
    
            else
            {
              MessageBox(0,"Datei existiert nicht","Datei existiert nicht",0);
            }
    
    }
    

    Die erste MessageBox zu umgehen war kein Problem und das die MessageBox Datei existiert angzeigt wird ist ja auch kein Problem.

    Damit aber die richtige MessageBox angezeigt wird muss die Text Datei ja
    ssdfsdf.txt heissen.

    Nun meine Frage wo sehe ich im Debugger das die Datei so heissen muss ?

    Hier auf dem Screenshot sieht man es ja aber was in Offset 00401BAD
    steht danach kann man ja nicht gehen.

    Auf dem Screenshot unten steht zwar:

    AL=01
    Stack SS:[0012F597]=00
    Unit1.cpp:35. pruefe = FileExists("ssdfsdf.txt");

    Da durch weiss ich natürlich wie die Datei heissen muss was ist aber wenn das nicht darunter steht?

    Woher weiss ich dann das die Datei ssdfsdf.txt heissen muss ?

    Hier ist mal ein Screenshot:

    http://img-up.net/?up=textn4F4Zk.JPG



  • dbg schrieb:

    Hallo ich beschäftige mich im moment ein wenig mit Reverse Engineering.

    Vielleicht haettest du mehr davon, wenn du dich erst nochmal ein wenig mit Assembler und Debugging allgemein beschaeftigen wuerdest...

    dbg schrieb:

    Damit aber die richtige MessageBox angezeigt wird muss die Text Datei ja
    ssdfsdf.txt heissen.

    Noe. Es gibt mehr als genug Wege, das Programm durch manuelles Aendern von Werten im Debugger oder dauerhaft durch Umschreiben des Programms (geht auch von OllyDbg aus) so zu aendern, dass diese MsgBox angezeigt wird, auch wenn die Datei gar nicht existiert.

    dbg schrieb:

    Nun meine Frage wo sehe ich im Debugger das die Datei so heissen muss ?

    Steht zB. auch in den Kommentaren vom Debugger rechts neben dem Code bei Offset 401BAD. Bei Debuggern, die dir nicht so schoene Hilfen anzeigen, heisst es halt selber mitdenken. Du kannst zB. versuchen, den Code zu identifizieren (denk nach, was der Code genau macht. Kann sehr aufwendig sein!), versuchen den String im Speicher und dessen Offset im Code wieder zu finden, Breakpoints setzen, uvm. Da ist Erfahrung und Kreativitaet gefragt, ein Patentrezept gibt es oft nicht.



  • ok ty dann hab ich ja noch so einiges vor mir (:


Anmelden zum Antworten