Frage:
Wie werde ich über IDA-Datenbankereignisse benachrichtigt, die nicht im IDA SDK enthalten sind?
0xC0000022L
2013-04-29 06:12:29 UTC
view on stackexchange narkive permalink

In meiner vorherigen Frage hatte ich ursprünglich darum gebeten, aber da dieser Aspekt der Frage völlig außer Acht gelassen wurde, fühle ich mich gezwungen, sie separat zu stellen.

Es gibt bestimmte Ereignisse, die offenbar nicht im IDA SDK behandelt werden. In der oben verlinkten Frage habe ich erfahren, dass vordere und hintere Kommentare unterstützt werden, aber was ist mit anderen Ereignissen, z. B. wenn ich h kbd> drücke (z. B. 2Ah wird 42 ), um die Nummer in Basis 10 (und zurück) zu ändern, oder r kbd>, um sie als Zeichen anzuzeigen (z. B. 2Ah wird zu * ).

Wie würde ich diese abfangen?

Hinweis: Im Allgemeinen bezieht sich diese Frage auch auf IDA-Versionen vor denen, die eine bestimmte Ereignisbenachrichtigung unterstützen . Z.B. Das IDA SDK 6.4 führte laut Igor Benachrichtigungen für vordere und hintere Kommentare ein. Wie kann ich ältere Versionen und 6.4 dazu bringen, mit rt zusammenzuarbeiten? Diese Ereignisse in Verbindung mit collabREate?

Ich weiß, dass es erlaubt ist, IDA selbst zurückzuentwickeln. Ich suche also nach Zeigern.

Falls Sie es nicht gesehen haben, könnte Dumpinfo.idc ein guter Anfang sein. Hier ist ein [Link] (https://www.hex-rays.com/products/ida/support/freefiles/dumpinfo.idc) für das von J.C. Roberts erstellte IDC-Skript. Ich bin mir nicht sicher, ob es Ihre Fragen beantwortet, also als Kommentar hinzufügen.
@alexanderh: nein, ich hatte nichts davon gewusst. Danke für den Zeiger. Es sieht sicherlich nach einem Ausgangspunkt aus.
Ich denke, die einzig mögliche Antwort auf diese Frage ist "Reverse Engineering". Ermitteln Sie den Mechanismus, durch den die Aktion ausgelöst wird, an der Sie interessiert sind, und patchen Sie dann IDA (oder verwenden Sie DLL-Injection usw.), um eine benutzerdefinierte Benachrichtigung zu senden. Ich bezweifle jedoch, dass es so einfach sein wird; Sie könnten vielleicht mehrere Codepfade erwarten, die für dieselbe Aktion verantwortlich sind. Ich gehe davon aus, dass Hex-Rays die Benachrichtigungen selbst hinzufügen würden, wenn es so einfach wäre.
Einer antworten:
NirIzr
2013-06-01 03:20:56 UTC
view on stackexchange narkive permalink

Wenn ich eine ähnliche Aufgabe ausführen musste, habe ich das IDB-Speicherereignis verknüpft und die IDB vor jedem Benutzer-Speichern mithilfe der IDA-API auf Änderungen überprüft. Das Scannen der gesamten Funktionsliste dauerte einige Sekunden, wobei die meisten Informationen sowohl für Funktionen als auch für Datenelemente zusammengefasst wurden.

Für mich klingt dies nach einem praktischeren Ansatz als dem Versuch, IDA zurückzuentwickeln und diese Hooks zu patchen Dies gilt insbesondere dann, wenn Sie versuchen, UI-Ereignisse wie Benutzer-Hotkeys abzufangen.

Beachten Sie jedoch, dass das Aggregieren von Struktur- / Aufzählungsdaten möglicherweise schwierig ist, wenn Sie sich nicht auf die IDA-ID-Nummern verlassen, wenn Sie Wenn Sie mehr als eine IDB-Datei verarbeiten möchten.

Wenn Sie IDA zurückentwickeln möchten, ist es sehr interessant, irgendwo an einer Diskussion zu diesem Thema teilzunehmen. Da IDA jetzt Qt für den größten Teil verwendet UI (obwohl ich vermute, dass die Migration zu Qt nicht so reibungslos verlief, wie man hoffen könnte), ein guter Ausgangspunkt für Qt wird der Artikel Daniel Pistellis Qt Internals and Reversing sein, der auch ein IDAPython enthält Skript am Ende (es wird jedoch dringend empfohlen, den gesamten Artikel zu lesen).

Es ist etwas veraltet, aber vorausgesetzt, IDA verwendet Qt 4.8. x Es gibt nicht viele Unterschiede (wenn Sie möchten, kann ich die mir bekannten auflisten).

Grundsätzlich, da Qt sehr ereignisgesteuert ist (und mit etwas Glück wurde IDA 6.0 damit entwickelt Denken Sie daran, dass Sie möglicherweise nur zuhören müssen. Im Qt-Dialekt wird dies als connect bezeichnet, indem ein Slot (Ereignishandler) mit einem verbunden wird Signal (Ereignis), zumindest für einige der spezifischen Ereignisse, die Sie einbinden möchten.

Ich habe zuvor einige moderate Qt-IDA-Hacks durchgeführt, wie ich sie nenne, wobei ich Qt und PyQt zum Manipulieren verwendet habe Qt-Objekte unter der IDA-Anwendung. Auf die gleiche Weise, wie ich es geschafft habe, Menüelemente und Symbolleisten manuell hinzuzufügen und zu bearbeiten, ist es definitiv möglich, das Kontextmenü-Popup aufzurufen, wenn Sie mit der rechten Maustaste in die Demontageansicht von IDA klicken oder die Hotkeys einbinden.

Diese RE.SE Antwort von mir könnte ein guter Anfang sein.

Vielen Dank, dass Sie sich die Zeit genommen haben, um zu antworten. Es ist ein guter Anfang in die Richtung, in die Rolf die einzig mögliche Methode hält.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...