Может кто-нибудь дайте мне знать, как мы собираемся вывести все графики подпрограмм в пакетном режиме, подавая в суд IDC
. то есть у меня есть 447 подпрограмм и хочу вывести их все, и я хотел бы убедиться, что сначала получаю все адреса процедур автоматически, потому что, зная адрес, я могу просто использовать GenFuncCall
. P.S: Это единственный cfg, который я могу получить от Ida Pro, учитывая двоичный дизассемблированный файл?Ida pro gragh output серийный режим
ответ
Если вы просто хотите, адреса всех известных функций в IDB, вы могли бы использовать что-то вроде этого, используя IDAPython (только в качестве примера):
def main():
for count, func_ea in enumerate(Functions()):
if func_ea == BADADDR:
break
func_name = GetFunctionName(funcea)
func_start = func_ea
print("[{:4}] name: {}; start address: {:#x}".format(count, func_name, func_start))
if __name__ == "__main__":
main()
Да, это хороший старт – Amir
Я нуждался в CFG всей моей программы, базы Например, я начал с был: https://code.google.com/p/idapython/source/browse/trunk/examples/ex_gdl_qflow_chart.py
Он использует класс диаграммы потока: https://www.hex-rays.com/products/ida/support/idapython_docs/idaapi.FlowChart-class.html
стоит также отметить, чтобы вызвать в пакетном режиме, вы хотите что-то вроде это
idal64 -A -S {yourscriptname} {.py yourbinary}
Советы:
- Прототип сценарий в первом выручить IDAPro графического интерфейса
Открытие графика процессор может вызвать проблемы с синхронизацией, его взломать, но что-то вроде задержки выполнения сценария, казалось, помогло, например
idaapi.autoWait() Timer(2, idacfg).start()
где idacfg ваш питон функция из примера
печати на стандартный вывод, кажется, не работает в пакетном режиме, так что вы хотите установить стандартный вывод в файл для вашей отладки ,
- Закрытие GUI в пакетном режиме по-прежнему является проблемой для меня.
Надеюсь, что это поможет.
Я не уверен, о чём ваш вопрос: хотите ли вы создать файл GDL для каждой из ваших подпрограмм, всех XREF между подпрограммами, XREF из/из всех BBL внутри ваших подпрограмм? Не могли бы вы уточнить, каковы ваши намерения? – Neitsa
Да, я могу генерировать файлы .dot (gdl) для моих подпрограмм на основе адреса и/ИЛИ всех них после указания начального/конечного адреса для всех. Но что, если мы не знаем адрес всех подпрограмм? Не удалось найти метод для получения адреса подпрограмм – Amir