Frage

Ich bin Debuggen einer Drittanbieter-DLL für die ich nicht den Quellcode haben. Diese DLL verwaltet einen Pool von Strings. Ich möchte das früheste Auftreten zu stoppen, bei dem eine dieser Zeichenkette in eine Funktion übergeben wird ... jede Funktion auf alle ...

Mit anderen Worten, ich möchte erkennen, wenn ein Zeiger-to-a-null-terminated-String ein bestimmtes Format aufweist, wird auf den Stapel geschoben ... von irgend jemand, und ich möchte eine Debug Pause auszuführen, wenn das auftritt, .

Ich weiß, Sie können eine „break-on-access“ Breakpoint gesetzt, die ausgelöst wird, wenn die CPU liest / schreibt / eine bestimmte Adresse ausführt. Was ich will, ist ähnlich wie folgt aus:. Für jede Saite auf den Stapel geschoben, ich habe es gegen ein bestimmtes Format testen wollen, und wenn es passt, führen Sie die Pause

Mit WinDbg, OllyDb, VS2008, whatever..any Ideen?

Danke!

War es hilfreich?

Lösung

Ich würde sagen, dass dies mit Ihren Anforderungen nicht möglich ist:

  

Ich mag erkennen, wenn ein Zeiger-to-a-null-terminated-String ein bestimmtes Format mit

Wie die vorherige Antwort, sagte Sie in der Lage sein, Ihre Zeichenfolge etwas einmal Ihre übereinstimmen Breakpoints Hits

  

Ich möchte zu stoppen das früheste Auftreten, bei dem eine dieser Zeichenketten in eine Funktion übergeben wird ... überhaupt keine Funktion ...   Was ich will, ist ähnlich wie folgt aus:. Für jede Saite auf den Stapel geschoben, ich habe es gegen ein bestimmtes Format testen wollen, und wenn es passt, führen Sie die Pause

Also, was Sie wollen, ist Notwendigkeit zu erkennen ist, wenn eine Funktion mit einem bestimmten Zeiger Parametern auf dem Stapel genannt wird - das ist der „unmöglich“ Teil ist. In der Theorie gibt es mehr Möglichkeiten, dies zu tun, aber sie sind zu langsam und zu kompliziert ... Und was, wenn die Funktion einen Zeiger auf einen Zeiger bekommt, der den Wert hat Sie Tracking oder ein Array, das diesen Zeiger enthält ...

Was ist es, Sie versuchen zu erreichen? Warum würden Sie den Ort müssen die Zeichenfolge zunächst in eine Funktion übergeben wird? Die Verwendung der Zeichenfolge ist, was die meisten oft wichtig ist, und wie Sie wissen, dass Sie auf, dass mit einem einfachen Speicherzugriffsbreakpoint brechen kann (wenn die Zeichenfolge immer fügen Sie eine weitere Unterbrechungs kopiert wird).

Ich würde empfehlen Sie einen anderen Ansatz, einen Disassembler zu verwenden und einige weitere statische Analyse mit ein bisschen Debuggen, was Sie brauchen ...

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