Как получить количество аргументов в определении функции, используя скрипт с IDAPython - PullRequest
0 голосов
/ 24 декабря 2018

Я использую IDA для анализа двоичных файлов и хочу получить количество аргументов каждой функции в определении, а не аргументы, передаваемые функции вызываемого.Версия IDA: 7.0 для Windows.

Требования

  1. Автоматически, потому что я хочу получить все номера каждой функции, а не анализировать конкретную функцию.Исключается использование сценария IDAPython для автоматического извлечения результатов.
  2. Работа с удаленными двоичными файлами C / C ++.Я перепробовал много методов, но ни один из них не работает хорошо для раздельных двоичных файлов.Однако, если вам известны какие-либо другие методы для двоичных файлов, которые не удаляются, это все равно приветствуется, поскольку в некоторых случаях мне приходится сталкиваться с тем, что двоичные цели не удаляются.Итак, я могу улучшить свой метод с вашей помощью.Для раздетых двоичных файлов я не знаю, как это сделать.
  3. Hex-Rays Decompiler не нужен.Я не хочу декомпилировать инструкции в язык C / C ++, я просто хочу получить количество аргументов для каждой функции.

Я пробовал следующие методы:

  • idc.getType, он хорошо работает для двоичных файлов c, чьи символы не удалены, не работает для c ++.
  • idc.Demangle, он может анализировать имя mangles двоичных файлов c ++ и получать аргументы.
  • ответ, https://reverseengineering.stackexchange.com/questions/8870/extracting-arguments-from-ida., но funcdata.size () всегда равен 0 для моих двоичных файлов.Я не знаю почему.Если вы знаете, скажите, пожалуйста, спасибо!
  • idaapi.get_arg_address, для меня это всегда None.

Есть ли какой-нибудь метод, который может извлечь количество аргументов?Или где это не так с методами, которые я пытался.

...