-
-
[IDA使用技巧]#008: 引擎下的批量处理模式
-
发表于: 2024-3-14 11:25 2287
-
翻译:梦幻的彼岸
原文地址:https://hex-rays.com/blog/igor-tip-of-the-week-08-batch-mode-under-the-hood/
上次我们简单介绍了批量处理模式,但基本功能并不总是足够的,所以我们来讨论一下如何自定义它。
基本用法
概括地说,可以使用此命令行调用批量处理模式:
ida -B -Lida.log <other switches> <filename>
IDA 将加载文件,等待分析结束,并将完整反汇编写入<filename>.asm
工作原理
事实上,-B
是-A -Sanalysis.idc
的简写:
-A
:启用自动模式(使用默认选项回答所有查询)。-Sanalysis.idc:
加载文件后运行脚本analysis.idc
。
您可以在 IDA install 的idc
子目录中找到analysis.
idc。在 IDA 7.5 中,它看起来如下:
static main() { // turn on coagulation of data in the final pass of analysis set_inf_attr(INF_AF, get_inf_attr(INF_AF) | AF_DODATA | AF_FINAL); // .. and plan the entire address space for the final pass auto_mark_range(0, BADADDR, AU_FINAL); msg("Waiting for the end of the auto analysis...\n"); auto_wait(); msg("\n\n------ Creating the output file.... --------\n"); auto file = get_idb_path()[0:-4] + ".asm"; auto fhandle = fopen(file, "w"); gen_file(OFILE_ASM, fhandle, 0, BADADDR, 0); // create the assembler file msg("All done, exiting...\n"); qexit(0); // exit to OS, error code 0 - success }
因此,要修改批量处理模式的行为,您可以
- 要么修改标准
analysis.idc
- 或使用
-S<myscript.idc>
指定不同的脚本
例如,要输出 LST 文件(其中包括地址前缀),请更改gen_file调用:
gen_file(OFILE_LST, fhandle, 0, BADADDR, 0);
批量反编译
例如,反编译整个文件:
ida -Ohexrays:outfile.c:ALL -A <filename>
只反编译函数main
:
ida -Ohexrays:outfile.c:main -A <filename>
这使用了反编译器插件的内置功能,其工作原理与analysis.idc
脚本类似(等待自动分析结束,然后将指定函数反编译到outfile.c
)。
自定义批量反编译
如果默认功能不够,可以编写一个插件,通过C++ API 驱动反编译器。不过,要编写脚本,使用 Python 可能更方便。与 IDC 类似,Python 脚本也可以使用-S选项
,在加载文件后自动运行。
本帖附有一个示例脚本。使用方法如下:
ida -A -Sdecompile_entry_points.py -Llogfile.txt <filename>
加快批量处理速度
在迄今为止的示例中,我们一直在使用 IDA 的完整图形用户界面版本ida
可执行文件。尽管在批处理模式下用户界面实际上并不显示,但它仍需要加载和初始化所有依赖的用户界面库,这可能会花费不可忽略的时间。因此,使用文本模式可执行文件(idat
)通常更好,因为它使用轻量级文本模式用户界面。不过,即使在批处理模式下,它仍然需要终端。如果需要在没有终端的情况下运行(例如在后台运行或从守护进程运行),可以使用以下方法:
- 设置环境变量
TVHEADLESS=1
- 重定向输出
例如
TVHEADLESS=1 idat -A -Smyscript.idc file.bin >/dev/null &
下载
赞赏
- [原创]物联网安全:基础篇 4099
- 威胁情报小课堂:阻止活跃勒索软件的感染 2165
- [翻译]发现利用 Facebook 和 MS 管理控制台实施的 Kimsuky APT 攻击 7041
- 威胁情报小课堂:LockBit Black 2041
- 威胁情报小课堂:Nitrogen 2067