Hex Rays

插件竞赛2019:名人堂


Hex-Rays插件竞赛结果2019

今年我们又一次考察了9位参赛选手的插件,我们考察的插件范围、重点再次非常广泛。几乎所有的插件都是用Python编写的,这似乎是一个稳定的趋势。

以下是我们对获奖者的选择:

  • 一等奖: Karta, 作者 Eyal Itkin
  • 二等奖: deREferencing, 作者 Daniel Garcia Gutierrez
  • 三等奖: idapkg, by jinmo123

恭喜获奖者!

以下是提交的完整列表:

  • BRUTAL IDA 作者 Tamir Bahar

    BRUTAL IDA通过阻止撤消重做键盘快捷键来恢复原始工作流程。

    我们的评价:

    Tamir Bahar’的插件很好地提醒了人们,不管是什么原因,人们都不喜欢自己的工作流程被破坏。

    插件一般倾向于增加功能,而这个插件则是来删除一些功能的:怀旧确实是一种很强大的感觉! (或者说是斯德哥尔摩综合症?)

     

    下载 BRUTAL-IDA-master.zip


  • CFG Inquisitor 作者 Brenda So CFG Inquisitor:

    […]检查控制流图(CFG)的有效进入和退出区块

    我们的评价:

    CFG查询器实质上限制了可以被视为功能的有效入口点或出口点的内容。

    这是一个相当小的插件,有一些似乎是特殊的启发式方法。目前还不清楚将这些扩展到IDA可以分析的所有二进制文件是否合理。

    该插件仍在积极开发中,目前似乎还不支持x86_64。

     

    下载 cfg_inquisitor.zip


  • deREferencing 作者 Daniel Garcia Gutierrez deREferencing是一个:

    IDA Pro插件,实现了更多用户友好的寄存器和堆栈视图。

    我们的评价:

    deReferencing 是一个 IDA Pro 插件,实现了新的寄存器和栈视图。添加dereferenced指针、颜色和其他有用的信息,类似于一些GDB插件(如:PEDA、GEF、pwndbg等)。

    支持x86、x86-64、ARM、ARM64、MIPS32和MIPS64。

    该插件添加了自定义视图,这些视图试图将寄存器和堆栈中的值解释为指针,并自动取消引用它们。根据它们所属的内存类型,值会以不同的颜色显示。

    它很强大、实用、易于安装和使用。代码具有很好的模块化和可读性。

     

    下载 deREferencing-master.zip


  • findrpc 作者 Lucas Georges findrpc 是一个:

    Idapython脚本,用于雕刻内部RPC结构的二进制

    我们的评价:

    findrpc.py是一个单文件脚本,它试图在PE二进制文件中找到Windows RPC服务器和客户端的描述。

    目标受众有点小,但显然RPC是Windows中未被开发的部分,所以它’是一个很有前途的领域,可以找到以前未知的漏洞。

    声明的功能列表令人印象深刻:

    • 一目了然地查看二进制中嵌入了哪些RPC客户端和服务器
    • 找到RPC服务器的调度表
    • 快速重命名找到的每个RPC proc处理程序
    • (在Windows上)从RPC声明生成反编译的IDL

    不幸的是,在我们的测试中,它只能在某些二进制文件上可靠地工作,并且很难诊断为什么它在其他二进制文件上确实失败了,因此肯定有改进的空间。

    为了显示结果,作者选择了本机Qt小部件,而不是IDA的标准选择器,因此,例如,从结果列表中复制文本不起作用,因为未实现

    IDL反编译功能使用单独的Windows二进制文件而不提供源代码,这并不总是很方便。

    就是说,当它确实起作用时,结果对于在Windows二进制文件中查找隐藏的界面非常好且有用。

     


  • ifred 作者 jinmo123 ifred是:

    IDA控制板& 更多

    我们的评价:

    Ifred是一个控制板,就像我们看到的几个一样。它对IDA命令和当前数据库中的名字进行模糊搜索。与其他解决方案相比,我们喜欢它吸引人的、可定制的外观。它还允许你创建自己的控制板。

     


  • idapkg 作者 jinmo123idapkg 是:

    IDA Pro的软件包

    我们的评价:

    Idapkg解决了安装IDA插件和管理其依赖关系的问题。基于在线资源库,它可以让你搜索软件包并安装或卸载它们。这仍然是一个概念验证,但却是朝着简单和标准的IDA插件安装方式迈出的有趣一步。

     


  • Karta 作者 Eyal Itkin Karta 是:

    是一个 IDA Python 插件,用于识别和匹配给定二进制中的开源库。该插件使用了一种独特的技术,使其能够支持庞大的二进制文件(>200,000个函数),而对整体性能几乎没有影响。

    我们的评价:

    Karta实际上是以下几方面的综合:

    • ThumbsUp 插件,可帮助恢复 ARM 二进制文件中的函数,而 IDA 却没有做到这一点
    • identifier,可识别编译的开源库和版本(例如,通过标识符字符串)
    • matcher,它将匹配来自先前识别的库的函数。

    Thumbs Up指本身就是一个相当重要的成就,因为它使用机器学习来恢复似乎是函数,而IDA没有发现,而且它似乎在ARM二进制文件上做得非常好。

    在接下来的工作中,Karta将在很多方面使用与FLIRT(和其他工具)不同的方法:

    • 它将仅在标识符确定该库存在于文件中时才尝试匹配来自库的函数,
    • 它将根据函数在文件中的位置,使用许多启发式方法来确定函数存在的“likeliness”。

    运行该插件可能会花费大量的时间(它是用Python编写的),但结果会非常令人满意。

    声明一下,Karta有很多的依赖关系,所以要确保这些依赖关系已经安装,并且可以通过sys.path到达:

    • awesomelib
    • Cute
    • decorator
    • elementals
    • hexdump.py
    • networkx (use version 2.2: newer versions require Python3.)
    • Sark
    • sklearn

     


  • SMS-IDA 作者 Edward Larson SMS-IDA是:

    该插件允许IDA API命令从你的手机上运行,任何地方!(前提是你有手机服务)。

    我们的评价:

    我们很难想象有人用短信控制他的IDA,但如果有任何绝望的灵魂需要这样的功能,这个插件是适合你的。

    稍作设置,包括安装一些python包,在一个处理短信的在线网站上注册,并在你的防火墙上打一个洞,你就可以开始了。

    只要被告知任何一个恰好知道短信发到哪里的人都可以参与,比如这样:

     


  • Virtuailtor 作者 Gal Zaban Virtuailtor是:

    一个IDAPython工具,用于在运行时重建C++ 虚函数表。

    我们的评价:

    该脚本不需要任何安装,所以要使用它,只需按Alt-F7键并选择Main.py文件。它将在你的数据库中添加大量的断点,然后一旦你使用你选择的调试器后台运行目标应用程序,它将创建C++虚拟表。当然,由于断点的存在,应用程序的执行速度会比平时慢。除了创建虚拟表之外,该脚本还为调用的函数添加了交叉引用。

    它支持x86,x64和Aarch64。

    我们喜欢这个主意,它有很大的潜力。 希望作者会继续改进脚本。

     


最后说明

一如既往,非常感谢所有参赛者提交的有用和有趣的作品。我们期待着下一次比赛的到来!

通用的免责声明

请注意,所有文件均来自第三方。虽然我们尽最大努力去核实它们,但我们不能保证它们的工作与广告上的一样,所以使用它们的风险由您自己承担。

对于插件支持问题,请联系作者。

日期:2019年9月23日

Go to top of page