我想得到一个使用IDA Pro反汇编的asm文件,并使用脚本一次制作大量的asm文件。
我尝试了两种方法来获取asm文件
第一个是使用idapython:
idc.GenerateFile(idc.OFILE_ASM, idc.GetInputFile()+".asm", 0, idc.BADADDR, 0)
成功生成asm文件,但该文件有一些隐藏的功能
像这样:
; [0000000C BYTES: COLLAPSED FUNCTION j__UIAccessibilityPostNotification. PRESS KEYPAD CTRL-"+" TO EXPAND]
第二个改为批处理模式来获取asm文件:
~/.ida-6.5/idal -c -parm:ARMv7 -B myFilePath/myFile
也成功生成了asm文件,但我遇到了同样的问题,即一些函数被隐藏了
有没有办法选择全部取消隐藏,然后从IDA导出asm文件?
迟到的答复
如果您在执行 idc 命令之前发送击键没有问题
您可以定义一个宏来取消隐藏所有折叠的功能
假设您使用的是gui版本打开idagui.cfg 导航到键盘快捷键定义并找到“取消隐藏全部”条目并定义按键序列 我已将
ctrl+2
定义为下面的 ida free 5.0
中的按键
\IDA_FRE_5\cfg>cat idagui.cfg | grep -i unhide
"Unhide" = "Numpad+"
"UnhideAll" = "Ctrl+2"
"GraphUnhideGroup" = 0 // Unhide group
"GraphUnhideAllGroups" = 0 // Unhide all groups
关闭并打开 ida 才能生效
从现在开始,如果你按 ctrl+2 并运行 idc 命令,你将得到一个不包含折叠函数的 asm
foo.asm 是在 ctrl+2 之前生成的 blah.asm 在按下 ctrl+2 后
auto fp;
fp = fopen("c:\\blah.asm","w");
GenerateFile(OFILE_ASM,fp,0x10127a4,0x10127aa,0x0);
fclose(fp);
下面两个文件的内容
C:\>type foo.asm blah.asm
foo.asm
;
; ╔═════════════════════════════════════════════════════════════════════════╗
; ║ This file is generated by The Interactive Disassembler (IDA) ║
; ║ Copyright (c) 2010 by Hex-Rays SA, <[email protected]> ║
; ║ Licensed to: Freeware version ║
; ╚═════════════════════════════════════════════════════════════════════════╝
;
; [00000006 BYTES: COLLAPSED FUNCTION _XcptFilter. PRESS KEYPAD "+" TO EXPAND]
blah.asm
;
; ╔═════════════════════════════════════════════════════════════════════════╗
; ║ This file is generated by The Interactive Disassembler (IDA) ║
; ║ Copyright (c) 2010 by Hex-Rays SA, <[email protected]> ║
; ║ Licensed to: Freeware version ║
; ╚═════════════════════════════════════════════════════════════════════════╝
;
; ███████████████ S U B R O U T I N E ███████████████████████████████████████
; Attributes: thunk
_XcptFilter proc near ; CODE XREF: start+199↑p
jmp ds:__imp__XcptFilter
_XcptFilter endp
您可以指定 -D 选项 ALYSIS 并取消设置位“自动隐藏库函数”(0x04000000):
终端模式,自动生成IDB库和ASM文件,无折叠lib功能:
"C:\Program Files\<IDA DIR>\idat64.exe" -B -DANALYSIS=0xDBFF9FF7 someBinaryFile
或者运行UI现有的IDB而不折叠lib函数:
"C:\Program Files\<IDA DIR>\ida64.exe" -DANALYSIS=0xDBFF9FF7 someBinaryFile.i64
来自 ida.cfg:
#define AF_HFLIRT 0x04000000 // Automatically hide library functions
ANALYSIS = 0xDBFF9FF7ULL // This value is combination of the bits defined above