Ergebnis 1 bis 5 von 5
  1. #1
    Anfänger
    Registriert seit
    14.01.2016
    Beiträge
    22

    Standard Frage zu Injection

    Ich habe mir vor kurzem die Notepad.exe von Windows XP geschnappt und einmal in OllyDbg geladen.
    Nun habe ich eine DLL nach System32 kopiert und registriert (mit dem Namen WinSystem.dll).

    Gepatcht sieht mein Notepad nun so aus:


    Nach dem ausführen funktioniert alles zuerst einwandfrei. Bis ich meine Maschine dann neu starte, danach funktioniert die ganze exeDatei nicht mehr....
    Kann es sein, dass sich die Adressen verändern, dann meine Frage wie ich die Adresse zur zB kernel32.dll ermitteln kann?

    Ich habe auch schon Versucht die Adressen in "Names in Notepad (Strg + N)" zu verwenden und zu callen, allerding führte auch das nicht zur Lösung.

    Schonmal vielen dank

  2. #2
    Anfänger
    Registriert seit
    08.04.2015
    Beiträge
    29

    Standard AW: Frage zu Injection

    Soweit ich weiß sind die Adressen selten statisch. Die Basis Adresse einer dll kannst du zur Laufzeit per GetModuleHandle ermitteln.
    Sachen und Dinge passieren halt.

    ~4ctid

  3. #3
    Anfänger
    Registriert seit
    14.01.2016
    Beiträge
    22

    Standard AW: Frage zu Injection

    Es schlägt jedoch schon beim kernel32.LoadLibraryA fehl. Die GetModuleHandle ist jedoch auch in dieser, also müsste ich diese dann doch auch nicht aufrufen können oder täusche ich mich da?
    Steh grade komplett aufm Schlauch >.< könntest mir evtl. ein Beispiel geben? Die notepad.exe in original könnte ich auch kurz uppen falls gewünscht.

    EDIT:

    Also habs schon hingekriegt. Folgendes hat Abhilfe geschaffen:
    - Strg+N -> Names in Notepad und die Offsets für LoadLibraryA und GetProcAddress raussuchen
    - statt direkt call kernel32.Blah -> call dword [offset von Dialog davor]
    Als Ergebnis schreibt OllyDbg: call dword ptr ds:[<&kernel32.funktion>] statt wie oben nur call kernel32.funktion

    Wenn mir noch einer erklären könnte was genau da passiert? Ich schätze mal dass ich auf die imports in der Datei per Referenz verweise oder sehe ich das falsch?
    Geändert von Rothir (15.02.2016 um 20:40 Uhr)

  4. #4
    Tron Avatar von gORDon_vdLg
    Registriert seit
    23.07.2007
    Beiträge
    801

    Standard AW: Frage zu Injection

    Genau, du hast im oberen Post einen 5-Byte langen Call welcher relativ von der Adresse springt wo er im Speicher liegt. Also E8 für Call und in den anderen 4 Bytes die Distanz. Daruch dass du "call dword ptr[xzy]" benutzt wird zu der Adresse gesprungen welche an dem angegebenen Pointer steht, was in deinem Fall wie du richtig erkannt hast die Referenz aus der Importtabelle ist.
    Vielleicht ist folgendes für dich interessant, das habe ich vor Jahren mal geschrieben, es wird mittels des PE Editors LordPE noch ein neuer Import hinzugefügt und benutzt: http://techcat.de/index.php?tutorials-1
    Das Target ist sogar auch der Notepad.

    PS: GetModuleHandle und LoadLibrary geben beide das Gleiche zurück, nur dass LoadLibrary die dll halt läd wenn sie noch nicht geladen war. Was ihm in diesem Fall halt eh nichts gebracht hätte weil er es immer noch relativ gecallt hätte.
    Geändert von gORDon_vdLg (15.02.2016 um 19:11 Uhr)

  5. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Rothir (15.02.2016)

  6. #5
    Anfänger
    Registriert seit
    14.01.2016
    Beiträge
    22

    Standard AW: Frage zu Injection

    Okay perfekt! Danke :3 Das Tutorial ist für mich auch interessant ja ^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •