『工具使用』IDA新版本 Beta常用插件修复

admin 2024年12月9日23:36:26评论122 views字数 2001阅读6分40秒阅读模式
 

日期:2024.12.06

作者:H4y0

介绍:IDA新版本下由于idaapi更新,导致大部分插件无法正常使用,本文将简单介分享几个常用的可在IDA新版本下运行的插件。

0x00 前言

新版本IDA的idaapi发生了较大的变更,本文简述插件适配新api的原理。

0x01 LazyIDA

根据hex-rays提供的文档,有几个改动产生了较大影响。

其中最大的变化在ida_structida_enum

『工具使用』IDA新版本 Beta常用插件修复
『工具使用』IDA新版本 Beta常用插件修复
具体可参考官方文档:

https://docs.hex-rays.com/pre-release/developer-guide/idapython/idapython-porting-guide-ida-9

LazyIDA可以更方便的提取数据、转储内存,受get_inf_structure移除的影响修改为idaapi.inf可正常使用。

『工具使用』IDA新版本 Beta常用插件修复
推荐使用P4nda0s修改后的版本:

https://github.com/P4nda0s/LazyIDA

0x02 keypatch

keypatch就不用多介绍了,支持多种架构,使用方便。

主要问题还是ida_struct的变化。

『工具使用』IDA新版本 Beta常用插件修复
完整版如下:

@staticmethoddef get_hardware_mode():    (arch, mode) = (None, None)    cpuname = ida_ida.inf_get_procname().lower()    is_be = ida_ida.inf_is_be()if cpuname == "metapc":        arch = KS_ARCH_X86if ida_ida.inf_is_64bit():            mode = KS_MODE_64        elif ida_ida.inf_is_16bit():            mode = KS_MODE_16else:            mode = KS_MODE_32    elif cpuname.startswith("arm"):        # ARM or ARM64if ida_ida.inf_is_64bit():            arch = KS_ARCH_ARM64if is_be:                mode = KS_MODE_BIG_ENDIANelse:                mode = KS_MODE_LITTLE_ENDIANelse:            arch = KS_ARCH_ARM# either big-endian or little-endianif is_be:                mode = KS_MODE_ARM | KS_MODE_BIG_ENDIANelse:                mode = KS_MODE_ARM | KS_MODE_LITTLE_ENDIANelif cpuname.startswith("sparc"):        arch = KS_ARCH_SPARCif ida_ida.inf_is_64bit():            mode = KS_MODE_SPARC64else:            mode = KS_MODE_SPARC32if is_be:            mode |= KS_MODE_BIG_ENDIANelse:            mode |= KS_MODE_LITTLE_ENDIANelif cpuname.startswith("ppc"):        arch = KS_ARCH_PPCif ida_ida.inf_is_64bit():            mode = KS_MODE_PPC64else:            mode = KS_MODE_PPC32if cpuname == "ppc":            # do not support Little Endian mode for PPC            mode += KS_MODE_BIG_ENDIANelif cpuname.startswith("mips"):        arch = KS_ARCH_MIPSif ida_ida.inf_is_64bit():            mode = KS_MODE_MIPS64else:            mode = KS_MODE_MIPS32if is_be:            mode |= KS_MODE_BIG_ENDIANelse:            mode |= KS_MODE_LITTLE_ENDIANelif cpuname.startswith("systemz") or cpuname.startswith("s390x"):        arch = KS_ARCH_SYSTEMZ        mode = KS_MODE_BIG_ENDIAN    return (arch, mode)

0x03 auto_re

和前两个插件相似,也是ida_struct的问题。

『工具使用』IDA新版本 Beta常用插件修复
已更新对IDA新版本的支持。

https://github.com/a1ext/auto_re

0x04 总结

IDA新版本对idaapi做出了较大的改变,导致大部分插件无法正常使用,其中相当一部分插件可通过修改使用ida_structida_enum处的代码正常使用,目前的Beta版本只推荐尝鲜使用,作为主力还是等正式版发布及大部分插件的更新支持后更为合适。

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

点此亲启

 

原文始发于微信公众号(宸极实验室):『工具使用』IDA新版本 Beta常用插件修复

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月9日23:36:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『工具使用』IDA新版本 Beta常用插件修复https://cn-sec.com/archives/3477082.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息