2014-03-03 7 views
5

Ich versuche, einen Funktionsaufruf-Tracer mit Pin zu schreiben. Es könnte jeden Funktionsaufruf sowie den Wert jedes Arguments drucken.Intel Pin Get Funktion Argumentnummer

Eine Schwierigkeit besteht darin, alle Argumente einer Funktion zu erhalten. Mit RTN_InsertCall, können Sie Funktionsargumente auf Ihren Instrumentationscode übergeben:

intel pin RTN_InsertCall multiple function arguments

Allerdings müssen Sie die Anzahl der Argumente der aktuellen Routine kennen. Gibt es eine Möglichkeit, das zu tun?

Danke!

Antwort

1

In C werden Typinformationen nicht im Binärcode gespeichert.

In C++ könnten Sie versuchen, den verkrüppelten Namen der Funktion zu verwenden, um herauszufinden, was die Typen der Argumente sind. Das Mangeln von Namen ist jedoch kein Standard und normalerweise zwischen verschiedenen Compilern inkompatibel. Natürlich gibt es hier keine Garantien. auch

Siehe:

Is it possible to get the signature of a function in a shared library programatically?

Getting function argument types

+0

Danke. Ich hoffe, dass Pin einige APIs zur Verfügung stellt, die das machen können, was ich will. – ZillGate

2

Sie sollten auf die entscheidenden Informationen liefern, ob Sie Debug-Symbole für die binäre in Frage haben oder nicht. Wenn Sie die Debug-Symbole zur Verfügung haben, ist es ein Kinderspiel. Es gibt Standardbibliotheken zum Parsen dieser.

Wenn Sie keine Debug-Symbole haben, dann kann es sehr schwierig sein und Sie sind grundsätzlich besser dran mit einem visuellen Erkundungswerkzeug wie IDA Pro. Es gab einige Nachforschungen über das automatische Finden von Funktionssignaturen für entfernte Binaries (zB ftp://ftp.cs.wisc.edu/paradyn/papers/Jacobson11Unstrip.pdf), aber das Thema ist immer noch blutig und jedes Tool, das Sie verwenden, erwartet, dass es irgendwann fehlschlägt, weil das Problem letztendlich unentscheidbar ist und alle Tools einfach greifen Heuristiken zur Rekonstruktion dieser Information. Das frei verfügbare Kapitel 12 von Chris Eagles Buch (http://www.tinker.tv/download/idaPro_ch12.pdf) deckt die Art ab, wie IDA dies tut.