Trochu historie: (aka stárnoucí chlap blábolící kolem)
Za starých časů jsme v IDA neměli python a když se jednotlivec chtěl rozvíjet plugin IDA musel implementovat v jazyce C a použít sadu SDK dostupnou v centru pro stahování hex-ray pomocí přihlašovacích údajů získaných při nákupu licence IDA. Měli jsme však IDC. IDC je starý, proprietární a poněkud zastaralý skriptovací jazyk IDA, to nesouvisí s C, nicméně existuje evidentní úsilí s použitím syntaxe typu C. V minulosti se běžně používalo, ale IDAPython jej téměř úplně nahradil. Jediným důvodem, proč nyní vidět IDC, je starý kód, který předchází IDAPython.
Od té doby byl vyvinut IDAPython (původně jako plugin využívající výše zmíněnou SDK, poté byl přijat hex-paprsky a byl součástí IDA). Až do nedávného IDA 6.95 jsme měli pouze jeden modul vystavující všechny C SDK IDA v pythonu. Tento modul byl idaapi
. idc
implementuje funkce vyšší úrovně, které byly migrovány z IDC do IDAPython. idautils
implementuje některé další funkce na vysoké úrovni, které tam dříve nebyly. to jsou hrubá rozdělení a nejsou úplně přesná. Důležité je zde to, že existoval jeden (dlouhý) soubor pythonu vystavující všechny funkce SDK (které jsou vystaveny pythonu pomocí SWIG).
V IDA 6.95 to stále máme , ale byla to také první verze, která obsahovala více modulů ida_ *
, které mají nahradit široké idaapi
. idaapi
je zahrnut pouze v 6.95 kvůli zpětné kompatibilitě a mělo by se očekávat, že bude zrušen v IDA 7. Obecně jsou názvy modulů (následující za předponou ida_
) názvy hlavičkových souborů, ve kterých jsou tyto funkce definovány. Například ida_lines
vystaví funkce definované v lines.h
.
Aktuální odpovědi :
- Sada IDA plugin SDK je kolekce hlavičkových souborů C a binárních knihoven, které umožňují třetí straně vyvíjet doplňky IDA pomocí poskytovaného API. Lze jej stáhnout z centra pro stahování a jeho dokumentace je k dispozici zde.
- Zatímco C SDK je docela dobře zdokumentována, IDAPython ne tolik . Často považuji procházení SDK za užitečné při vývoji pluginů IDAPython, protože funkce jsou obvykle vystaveny pythonu, ale nejsou zdokumentovány ani popsány, stejně jako v SDK. v zásadě většina funkcí odpovídá a v IDAPythonu i SDK najdete stejné funkce se stejným názvem (většinou jde o automaticky generovaný kód pomocí / for SWIG).
- Nejprve byste hádali, že používáte starší verzi IDA, kde moduly
ida_ *
dosud neexistují. Obecně platí, že použití idaapi
namísto všech ostatních modulů bude v pořádku.
Vývoj pro IDA:
Zájemce o vývoj pro IDA má tři možnosti:
- Psaní kódu C pomocí sady IDA SDK a jeho kompilace,
plw
nebo p64 kód> binární jako výstup.
- Psaní kódu IDC. Jedná se o slušný skriptovací jazyk připomínající zjednodušenou C v syntaxi. výstupem by byl textový soubor. Toto byl skriptovací jazyk volby pro IDA, než se IDAPython stal populárním a vlastnictví bylo převedeno na hexrays.
- Psaní kódu IDAPython. Většinou se jedná o python využívající další dostupné moduly při spuštění z IDA, plus jednoduché rozhraní pluginu IDA vyžadované pro registraci jako plugin.