我需要一种方法来复制使用IDA Pro进行反汇编的二进制文件的所有函数名称。是否有从IDA导出功能的选项?
答案 0 :(得分:3)
您可以编写一个快速IDC脚本来枚举函数名称并将它们发送到文本文件。
检查idc.idc以获取要使用的相应命令。
另一种方法是只需打开“功能”窗口并按Ctrl + C并将结果粘贴到文件
中答案 1 :(得分:0)
这是我用来转储函数名的代码,你需要将0x40000更改为你的第一个函数EA值。您也可能想要更改输出消息。我右键单击输出窗口并清除它,然后运行脚本,然后右键单击save-as:
#include <idc.idc>
static FuncDump(start)
{
auto ea, str, count, ref;
auto end;
auto teststr;
ea = start;
while( ea != BADADDR )
{
str = GetFunctionName(ea);
if( str != 0 )
{
end = FindFuncEnd(ea);
count = 0;
ref = RfirstB(ea);
while(ref != BADADDR)
{
count = count + 1;
ref = RnextB(ea, ref);
}
teststr = sprintf("sub_%X", ea);
if( teststr != str )
{
Message("-s 0x%X=%s\n", ea, str );
}
//Message("%s, 0x%d, 0x%x, 0x%x, 0x%x, %d\n", str, count, ea, end, end-ea, end-ea );
}
ea = NextFunction(ea);
}
}
static main()
{
//Message("FuncDump: Start\n");
FuncDump(0x40000);
//Message("FuncDump: Done\n");
}
答案 2 :(得分:0)
对于Windows DLL,可能有两个或多个函数与具有不同序号的相同地址关联。
为每个地址编写一个函数是错误的假设。
对我来说更简单的方法是导出程序不受影响 档案 - &gt;制作文件 - &gt;创建ASM文件
并使用“grep”等工具列出所有出现的字符串“Exported entry”。
即使IDA Pro 5免费也可以使用。
当然,在分析完成之前需要一段时间。
答案 3 :(得分:0)
GUI:
Ctrl+P > right menu > copy all
或
Py脚本:
import idautils, ida_funcs
def get_func_names():
names = []
for ea in idautils.Functions():
name = ida_funcs.get_func_name(ea)
names.append(name)
return names
print('\n'.join(get_func_names()))
//通过ida7测试