2012-01-14 59 views

回答

3

您可以编写一个快速的IDC脚本来枚举函数名并将其发送到文本文件。

检查idc.idc是否使用适当的命令。

另一种方法是只需打开功能窗口,按Ctrl + C,结果粘贴到文件

+3

我需要使用Ctrl + Ins将子视图的内容复制到剪贴板。 – user1354557 2013-02-14 16:13:32

0

下面是我用倾倒我的函数名称的代码,你要到0x40000更改为第一个功能EA值。你也可能想要改变输出信息。我右键单击输出窗口,并清除它,然后运行该脚本,然后单击鼠标右键另存为:

#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"); 
} 
+0

如何从输出窗口导出名称?当我点击右键我得到的是复制/清除。另外,为了在IDA 5免费 – crush 2013-09-05 20:04:55

+0

@crush中使用'form()'替换'sprintf()',在付费版本中,在输出窗口中有'save as'选项。 – 2014-06-28 04:05:30

+0

我突出显示“功能”窗口中的所有子程序,然后单击编辑菜单,然后单击复制。 – 2015-04-02 00:05:46

0

对于Windows DLL,可以有两个或多个功能关联与不同的顺序相同的地址数字。

为每个地址编写一个函数脚本是一个错误的假设。

的更简单的方法我是通过 文件的程序不变出口 - >农产品文件 - >创建ASM文件

,并列出了字符串“导出入口”的所有出现类似的“grep”的工具。

即使免费使用IDA Pro 5,此功能也可以使用。

当然,分析完成前需要一段时间。

相关问题