Frage

Wie kann ich die Parameter eines finden nicht dokumentiert DLL-Funktion?

Ich habe alle über das Internet gesucht und am Ende der Suche nach einer Art und Weise: Es geht um dekoriert Funktionen. Allerdings kann ich nicht einen Weg, um diejenigen finden.

Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

Sie müssen die Anwendung zerlegen, wie Paulus erwähnt, so etwas wie IDA Pro (oder die kostenlose Version derselben).

Eine gute einführende Ressource ist die Wikibook, x86 Ausbau . Insbesondere werfen Sie einen Blick auf den Abschnitt Funktionen und Rahmen stapeln. Funktionsparameter herzuleiten kann für einfache Funktionen einfach sein, ein paar Parameter des Standardtypen nehmen.

Wahrscheinlich der beste Weg, um mit dieser Art der Sache zu beginnen ist ein kleinen Test DLL zu erstellen, einige Funktionen mit bekannten Parametern erstellen, und dann zerlegen DLL, die Muster zu sehen. Erfahren Demontage von Ihrer eigenen Funktionen (für die Sie den Quellcode haben und kennen die volle Unterschrift) statt Eintauchen in Fremd Sachen zerlegen.

Andere Tipps

habe ich eine ziemlich in die Tiefe gehende Antwort hier , ReactOS Wette ist die beste, wie es scheint wieder, alle hier ist ein wenig weg von der Unterseite.

Ich würde stark entmutigen versucht System zu zerlegen DLL.

VIEL mehr adventagious (und ich glaube nicht so weit von den Blicken der Dinge besprochen), Technik ist, den Inhalt des HVE der aufzuzählen.

PDB-Dateien sind Debug-Symbole, wie Sie wissen, können jedoch Microsoft erforderlich ist, aufgrund der Wirkung von Kartellgerichtsverfahren, große Mengen an sonst un dokumentierte Informationen zu veröffentlichen.

Völlig korrekt, verwendbar und aktuelle Informationen für die enorme Menge des von dem Windows-API ist nur über PDB Datei dokumentiert. Die Aufrufkonvention, Argumentzähler und sogar Argumenttypen und Namen ihre dokumentiert (jedoch nicht, die Besonderheiten in Bezug auf die Verwendung natürlich:).

überprüfen Sie das DIA SDK, dia2dump ist ein gutes Beispiel mit Visual Studio verteilt, weiter zu untersuchen, sondern bietet auch eine Lösung Funktion undecorate, speziell auf Ihre Frage zu sprechen.

Auch bietet kernel32 UnDecorateSymbolName, so können Sie verwenden, auch wenn Sie die Debug-sdk-Bibliotheken verknüpfen nicht wollen.

Der einzige Weg, dies zu tun ist durch die Funktion Zerlegen und zu sehen, wie es die Register und Stack verwendet. IDA Pro ist das beste Werkzeug, dies zu tun, aber es ist nicht etwas, das trivial ist.

Ist es COM Dll? Wenn es sich um eine COM-DLL ist, registrieren Sie dann, verwenden Sie OLE Ansicht, die die Interafaces und Parameter zu kennen.

Zu allererst herunterladen Dependency Walker und öffnen Sie Ihre DLL in ihm. Sie werden Symbole exportiert und importiert sehen. Wenn Ihre Funktion Name sieht aus wie _MyFunction - es ist „C“ Stil (nicht eingerichtet), und Sie haben nicht zu viel damit zu tun (kann wie gesagt wird DISASSEMBLE)

?

Wenn es mehr wie _MyFunction ist @ LoNgSetOfSome @ _StrangeChAracTers ist es C ++ - eingerichtet und Sie können auf "undecorate" versuchen Sie es mit {} inoffiziellen Informationen von hier

Wenn die einzige Information, Sie haben der undecorated Funktionsname ist, dann ist es leider nicht möglich, die Funktionsparameter aus, dass allein abzuleiten.

Wenn Sie mit Montage gut sind könnte es möglich sein, den Maschinencode für die Funktion zu zerlegen und umkehren Ingenieur. Aber das ist ziemlich hart, aber die einfachsten Funktionen für alle zu tun.

Ich bin nicht wirklich vertraut mit dem PE-Format, das Windows verwendet, aber ich bin mir ziemlich sicher, dass es keine wirkliche einfache Möglichkeit, dies zu tun. Wenn die Symboltabelle nicht entfernt wurde, können Sie möglicherweise einige Informationen finden (nicht sicher, wie Windows speichert Debug-Informationen in PE), aber es wäre mit ziemlicher Sicherheit nicht, dass Sie mit Parametertypen helfen. Das Beste, was zu tun ist, um die DLL in einen Debugger geladen werden und experimentieren mit ihm ... überwachen die rohen Speicher auf dem Stapelrahmen, verschiedene Variablentypen senden, etc.

Auch wenn Sie eine gute Ressource auf den Debug-Informationen in einer PE-Datei zu finden, wird es mit ziemlicher Sicherheit keine Informationen für eine private Funktion sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top