Ich bin beschäftigt, ein Tutorial zu folgen, in dem der Autor DUMPBIN verwendet, um Exporte aufzulisten, und OllyDbg, um den Assembly-Code für eine exportierte Funktion abzurufen. Wie würde ich den Funktionscode in der vollständigen Disassemblierung finden, da die Exporttabellen RVA's bei der Demontage nicht realen Adressen entsprechen.Suchen einer Funktion in einer Zerlegung
Antwort
Ein RVA ist eine verschiebbare virtuelle Adresse. Um die reale Adresse im Prozessbereich zu finden, müssen Sie die Basisadresse kennen, unter der das Modul geladen wurde. Fügen Sie diese Basisadresse zur RVA hinzu und Sie haben die echte Adresse. Ich habe ollydbg nicht verwendet, aber ich wäre erstaunt, wenn es nicht die Basisadresse für die Module liefert, die in dem Prozess geladen sind, an den es angehängt wurde. Wenn es aus irgendeinem Grund diese Information nicht liefert, können Sie es erhalten, indem Sie procexp.exe von den sysinternal-Tools verwenden.
Ein ziemlich guter Indikator für eine Funktion, zumindest für Programme, die in Hochsprachen geschrieben sind, ist Code, der einen Stapelrahmen einrichtet.
Wenn Sie den Compiler kennen, der verwendet wurde, um den fraglichen Code zu generieren, sollten Sie herausfinden können, wonach Sie suchen sollen.
Beispiel
$ cat main.c
int main(int argc, char **argv) {
return 1;
}
$ gcc -m32 -S main.c
$ cat main.s
.file "main.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
movl $1, %eax
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (Debian 4.3.3-4) 4.3.3"
.section .note.GNU-stack,"",@progbits
In meinem Beispiel die movl% esp,% ebp Anweisung ist die letzte Anweisung des Setup-Code.
Der kommerzielle Disassembler IDA Pro, für den eine free-as-in-beer version zum Download verfügbar ist, funktioniert ziemlich gut automatisch Funktionen zu finden.
Ich habe das kostenlose IDA Pro, und es ist fantastisch, aber ich bleibe bei dem Buchautor und mache es "kalt". Ich habe keine Funktion gesucht, wie Ihre Antwort vermuten lässt, sondern einen spezifischen Export. Was ist das komische Sprache, die Sie hier zeigen, ich kenne nur Windows, :-) – ProfK
die "seltsame Sprache" ist nur Copy & Paste Text aus einer Unix-Shell-Sitzung, mit dem "$" die Eingabeaufforderung. Ein minimales C-Programm wird zur x86-Assembly kompiliert. – hillu
Die seltsame Sprache ist die AT & T-Notation ;-) – ProfK
- 1. Zerlegung einer Beziehung in BCNF
- 2. Zerlegung einer Zeichenfolge in as3
- 3. Zerlegung einer Zeichenfolge in Array-Fehler
- 4. QR-Zerlegung in R - Forcing einer positiven Diagonale
- 5. Suchen einer Zeile in einer txt-Datei
- 6. Suchen in einer Arraylist
- 7. verlustreiche Zerlegung
- 8. STL-Zerlegung in R
- 9. Zerlegung einer Zeichenfolge in eine Telefonnummer und Erweiterung mit preg_match
- 10. BCNF Zerlegung
- 11. Suchen einer Zeichenfolge in einer Zeichenfolge
- 12. Rückwärts Suchen in einer Zeichenfolge
- 13. wie in einer ArrayList suchen?
- 14. Suchen einer gespeicherten Prozedur
- 15. Nach einer Nullreferenz suchen?
- 16. Suchen einer Textdatei C#
- 17. Funktionale Zerlegung vs Anwendungsfall
- 18. TensorFlow cholesky Zerlegung
- 19. Suchen in der Mitte einer Liste
- 20. Verlustbehaftete ODER verlustfreie Zerlegung
- 21. Numpy Cholesky Zerlegung LinAlgError
- 22. Suchen einer Zeile in einer Datentabelle und Löschen in .NET
- 23. Funktion in einer Funktion Rückgabewert
- 24. Aufruf einer Funktion in einer Funktion in python3
- 25. Zerlegung der Zeichenkette in die Teilzeichenkette c
- 26. Suchen nach einer bestimmten DateTime in einer SQL-Datenbank (WebMatrix)
- 27. Verwenden einer TextChanged-Ereignisbehandlungsroutine beim Suchen in einer Datenbank
- 28. Java - Optimieren Sie das Suchen einer Zeichenfolge in einer Liste
- 29. Suchen Fenstergriff einer Multifunktionsleiste Schaltfläche
- 30. IndexOf in einer Funktion
nur aus Neugier, welches Tutorial? – Nils
Es ist ein Teil von Reversing: Geheimnisse des Reverse Engineering, Eldad Eilam. Eine etwas bahnbrechende Arbeit über Reverse Engineering IA-32 Windows-Anwendungen. Sein erstes Ziel ist es, die Fähigkeit zu entwickeln, eine "tote" Auflistung mit minimalen Werkzeugen zu lesen. – ProfK