Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
skripten:engineforschung [2018/09/09 17:36]
mud-freak [Teil I]
skripten:engineforschung [2018/09/09 17:38]
mud-freak [IDA View (Disassembly)]
Zeile 46: Zeile 46:
 Jede Zeile enthält eine Instruktion. Die vier Spalten von links nach rechts sind: Jede Zeile enthält eine Instruktion. Die vier Spalten von links nach rechts sind:
  
-{{ :​skripten:​engineforschung:​instruction.png |}}+{{ :​skripten:​engineforschung:​instruction.png?​nolink ​Zeile aus IDA }}
  
 ==== Adresse ==== ==== Adresse ====
Zeile 91: Zeile 91:
 ==== ESP ==== ==== ESP ====
  
-{{  :​skripten:​engineforschung:​stack.png?​400| Maschinenstack und ESP }}+{{  :​skripten:​engineforschung:​stack.png?​400&nolink| Maschinenstack und ESP }}
  
 ESP zeigt auf den derzeitigen [[#​Maschinenstack|Stackanfang]]. Den brauchen wir also um an auf dem Stack abgelegte Daten heran zu kommen. Deshalb finden wir in Hookfunktionen in Daedalus-Skripten ESP recht häufig. So kann die Hookfunktion Daten auslesen, die zum Zeitpunkt des Hooks auf dem Stack liegen sind. //"​Derzeitigen Stackanfang"//​ deshalb, weil beim Ablegen (push) auf den Stack der Stackpointer um die abgelegte Anzahl an Bytes verringert wird (der Maschinenstack wächst nach unten) und beim Herunternehmen (pop) wieder entsprechend erhöht wird. In IDA finden wir häufig ''​ESP+X''​. Das ''​X''​ steht dabei für den [[#​Stackoffset|Stackoffset]],​ den wir auch in IDA in der zweiten Spalte der Zeile einsehen können. Jedes mal wenn etwas auf den Stack gelegt wird (mit der Instruktion ''​push''​),​ wird ESP entsprechend verringert und der Stackoffset erhöht. Nach beliebig vielen neuen Werten auf dem Stack können wir später trotzdem immer (solange unserer Wert nicht gepoppt ist) mit Hilfe des Stackoffsets ''​X''​ an die Daten kommen: ''​ESP+X''​. ESP zeigt auf den derzeitigen [[#​Maschinenstack|Stackanfang]]. Den brauchen wir also um an auf dem Stack abgelegte Daten heran zu kommen. Deshalb finden wir in Hookfunktionen in Daedalus-Skripten ESP recht häufig. So kann die Hookfunktion Daten auslesen, die zum Zeitpunkt des Hooks auf dem Stack liegen sind. //"​Derzeitigen Stackanfang"//​ deshalb, weil beim Ablegen (push) auf den Stack der Stackpointer um die abgelegte Anzahl an Bytes verringert wird (der Maschinenstack wächst nach unten) und beim Herunternehmen (pop) wieder entsprechend erhöht wird. In IDA finden wir häufig ''​ESP+X''​. Das ''​X''​ steht dabei für den [[#​Stackoffset|Stackoffset]],​ den wir auch in IDA in der zweiten Spalte der Zeile einsehen können. Jedes mal wenn etwas auf den Stack gelegt wird (mit der Instruktion ''​push''​),​ wird ESP entsprechend verringert und der Stackoffset erhöht. Nach beliebig vielen neuen Werten auf dem Stack können wir später trotzdem immer (solange unserer Wert nicht gepoppt ist) mit Hilfe des Stackoffsets ''​X''​ an die Daten kommen: ''​ESP+X''​.
skripten/engineforschung.txt · Zuletzt geändert: 2018/09/09 17:38 von mud-freak