旧版本的 IDA python scripts 脚本不能使用了怎么办?

参考资料1:https://blog.xhyeax.com/2021/12/04/idapython-scripts-upgrade/

参考资料2:https://hex-rays.com//products/ida/support/idapython_docs/

参考资料3:https://stackoverflow.com/questions/11941817/how-can-i-avoid-runtimeerror-dictionary-changed-size-during-iteration-error


这通常是由于:旧版本的 IDA python script 是在 IDA6+python2 时代编写的,而你现在在使用 IDA7+python3 执行它

首先要做的事情是:把旧版本 idapython 脚本的书写格式改为 python3 格式的

随后,IDA6 ----> IDA7 的过程中,idc 模块的大量 API 被改名了,我们需要把这些 API 的名字改到 IDA7 的 API。相关内容参考这篇博客:https://blog.xhyeax.com/2021/12/04/idapython-scripts-upgrade/

IDA6 和 IDA7 的 API 名字对应关系可以参考 ida pro 7.6\python\3\idc_bc695.py,也可以直接把这里的内容拷贝到你的脚本里,让脚本 自行替换 API。

除了 idc_bc695.py 里的内容外,还有一些其它 API 的名字也被修改了,比如 “NextHead, PrevHead” 被改成了 “next_head, prev_head”,具体参考这个 API 文档:https://hex-rays.com//products/ida/support/idapython_docs/

最后就是,python2 和 python3 在字典操作方面有一些出入,比如 python2 允许在迭代过程中对字典的大小进行修改,而 python3 不允许,如果 IDApython script 出现了这种操作,我们也要进行相应的修改。具体参考:https://stackoverflow.com/questions/11941817/how-can-i-avoid-runtimeerror-dictionary-changed-size-during-iteration-error

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值