日期:2024.12.06
作者:H4y0
介绍:IDA新版本下由于idaapi更新,导致大部分插件无法正常使用,本文将简单介分享几个常用的可在IDA新版本下运行的插件。
0x00 前言
新版本IDA的idaapi发生了较大的变更,本文简述插件适配新api的原理。
0x01 LazyIDA
根据hex-rays
提供的文档,有几个改动产生了较大影响。
其中最大的变化在ida_struct
和ida_enum
。
https://docs.hex-rays.com/pre-release/developer-guide/idapython/idapython-porting-guide-ida-9
LazyIDA
可以更方便的提取数据、转储内存,受get_inf_structure
移除的影响修改为idaapi.inf
可正常使用。
P4nda0s
修改后的版本:
https://github.com/P4nda0s/LazyIDA
0x02 keypatch
keypatch
就不用多介绍了,支持多种架构,使用方便。
主要问题还是ida_struct
的变化。
@staticmethod
def 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_X86
if ida_ida.inf_is_64bit():
mode = KS_MODE_64
elif ida_ida.inf_is_16bit():
mode = KS_MODE_16
else:
mode = KS_MODE_32
elif cpuname.startswith("arm"):
# ARM or ARM64
if ida_ida.inf_is_64bit():
arch = KS_ARCH_ARM64
if is_be:
mode = KS_MODE_BIG_ENDIAN
else:
mode = KS_MODE_LITTLE_ENDIAN
else:
arch = KS_ARCH_ARM
if is_be:
mode = KS_MODE_ARM | KS_MODE_BIG_ENDIAN
else:
mode = KS_MODE_ARM | KS_MODE_LITTLE_ENDIAN
elif cpuname.startswith("sparc"):
arch = KS_ARCH_SPARC
if ida_ida.inf_is_64bit():
mode = KS_MODE_SPARC64
else:
mode = KS_MODE_SPARC32
if is_be:
mode |= KS_MODE_BIG_ENDIAN
else:
mode |= KS_MODE_LITTLE_ENDIAN
elif cpuname.startswith("ppc"):
arch = KS_ARCH_PPC
if ida_ida.inf_is_64bit():
mode = KS_MODE_PPC64
else:
mode = KS_MODE_PPC32
if cpuname == "ppc":
# do not support Little Endian mode for PPC
mode += KS_MODE_BIG_ENDIAN
elif cpuname.startswith("mips"):
arch = KS_ARCH_MIPS
if ida_ida.inf_is_64bit():
mode = KS_MODE_MIPS64
else:
mode = KS_MODE_MIPS32
if is_be:
mode |= KS_MODE_BIG_ENDIAN
else:
mode |= KS_MODE_LITTLE_ENDIAN
elif cpuname.startswith("systemz") or cpuname.startswith("s390x"):
arch = KS_ARCH_SYSTEMZ
mode = KS_MODE_BIG_ENDIAN
return (arch, mode)
0x03 auto_re
和前两个插件相似,也是ida_struct
的问题。
https://github.com/a1ext/auto_re
0x04 总结
IDA
新版本对idaapi
做出了较大的改变,导致大部分插件无法正常使用,其中相当一部分插件可通过修改使用ida_struct
和ida_enum
处的代码正常使用,目前的Beta
版本只推荐尝鲜使用,作为主力还是等正式版发布及大部分插件的更新支持后更为合适。
原文始发于微信公众号(宸极实验室):『工具使用』IDA新版本 Beta常用插件修复
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论