Saudações,
Este artigo abordará como não fazer isso ao desenvolver um SDK para o seu produto. E um exemplo, pode-se dizer, o mais impressionante, será o IDA Pro. Aqueles que pelo menos uma vez desenvolveram algo para isso e tentaram apoiar, enquanto liam essas linhas, com certeza, agora estremeceram e ficaram cobertos de suor frio. Aqui, reuni experiência em apoiar projetos, começando com o IDA v6.5 e terminando com a versão mais recente no momento em que escrevi este documento - v7.5. Em geral, eles dirigiram.
Pequena descrição
O IDA Pro SDK permite desenvolver os seguintes tipos de aplicativos:
- Carregadores de vários formatos
- Módulos do processador
- Plug-ins que ampliam a funcionalidade (módulos do processador, interface etc.)
- Scripts IDC (sua própria linguagem) e scripts Python (usam IDAPython de desenvolvimento de terceiros, que se tornou parte integrante do IDA)
Hex-Rays, SDK — 10000 USD. — , Support-, . , : , , ; , , . , (), .
, - IDA, SDK, , , , . :
1) , , , - doxygen- API, , , , , .., .
IDA API , — . , , IDA , .
2) callback-, , , ( NULL
) — . — . , .. ( — -), , " ". , x64dbg/ollyDbg, — idaq.exe/ida.exe, , , , 0x00000000.
, , 200MB dmp-, IDA… .
3) IDA Pro — . , — , , .. :
legacy-, . . , , , / .
, : .. SDK, , , , , , .
Hex-Rays? , ! , , MS-DOS (, , - ). , , . , IDA , , (flat), MS-DOS "" ! IDA . , flat, ( ).
SDK . ( 6.x 7.x) - : , , API, , . .
- , , , . ! , : IDA 7.0 SDK: Porting from IDA 4.9-6.x API to IDA 7.0 API, . , , .. , , , , , . , C/C++ , - 5-6 SDK.
, , , — .
- - Motorola 68000 IDA. SDK (, , IDA Pro ), , . - — PS3, , , SDK.
, SDK , , , :
cpp-, #include
? . , PS3, - — Sega Mega Drive.
: , , . , , , , ...
IDA, m68k, ( " IDA Pro. ").
, ! , SDK… debugger_t
, , , , IDA. .
SDK… x64, x86! Gens, , x64, . , x64, SDK, , , .
SDK IDA Pro ; , — , , .
/ - SDK, , — , ! , IDAPython. , , , , , .
Github , IDA v7.x. , ? , , , API .
IDA Pro Book
Também gostaria de relembrar um livro inestimável que uma vez me ajudou muito, mas que agora é absolutamente inútil para um desenvolvedor de plugins da IDA - IDA Pro Book de Chris Eagle . Tudo descrito nele se refere à versão 6.x (aproximadamente v6.5-v6.8). Quase tudo mudou desde então.
Obrigado.