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.