【问题标题】:IDA pro ImportsIDA pro 进口
【发布时间】:2013-01-31 01:14:25
【问题描述】:

过去几周我一直在研究 ida Pro 以获得一些背景知识。

困扰我很久的事情是似乎缺乏对提取导入函数的支持。

我想要的只是一个可以复制整个导入窗口并粘贴到文本文件中的脚本,但是我在 API 中找到任何可以帮助我执行此操作的内容时遇到了严重的麻烦。这应该很简单,但我觉得不可能。我已经设法找到从这个窗口中拉出图书馆的东西,但没有什么可以拉出所有东西。

任何帮助或指导将不胜感激。

【问题讨论】:

  • 使用 openImports() 的东西,那么 copyall 会很棒。但我不知道如何处理 copyall 位。

标签: python ida


【解决方案1】:

我同意您应该使用 Ctrl+Insdumpbin 的说法。

但是,IDAPython 项目已经解决了你的问题,我建议你去看看他们的例子(herehere),尤其是this one

相关的idaapi函数有:

  • idaapi.get_import_module_qty
  • idaapi.enum_import_names

【讨论】:

    【解决方案2】:

    图形界面解决方案:

    您可以通过将焦点放在该窗口上并点击 Ctrl+Ins 来复制导入窗口的全部内容。

    IDAPython 解决方案:

    这可能需要根据您的喜好进行调整,但这应该可以帮助您入门:

    text = ""
    seg = SegByName(".idata")
    for i in xrange(seg, SegEnd(seg), 4):
        text += "%08x %s\r\n" % (i, Name(i))
    open(r"c:\imports.txt", "wb").write(text)
    

    【讨论】:

    • 如果导入不在 .idata 中,则失败 ... 由于这是约定而不是规则,您应该修复它:)
    • 我希望能够使用脚本来执行此操作,以便我可以在多个文件上执行此操作,是否有一种简单的方法可以编写脚本?
    • @WillMarkey:我最初的解决方案是一个非常基本的 IDAPython 脚本来打印姓名和地址,但我删除了它以支持Ctrl+Ins,因为我不确定你是否特别想要一个脚本或不是。我会把它放回去,但如果您只想通过批处理转储导入,您可能更喜欢像 dumpbin 这样的工具。 (例如,dumpbin /imports myfile.exe
    • 这里不喜欢将python int转换为C long
    • 好吧,如果您不处理 32 位地址,则需要稍微更改格式字符串以产生正确的输出。上面的代码 sn-p 只是相关 IDC API 如何用于您的目的的示例。但是,使用idaapi 获取导入更健壮,因此您应该改用@0xC0000022L 的解决方案中提到的API。
    猜你喜欢
    • 1970-01-01
    • 2014-11-13
    • 2016-10-26
    • 2012-09-28
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2012-11-09
    相关资源
    最近更新 更多