首页
社区
课程
招聘
[求助]如何删除ida Imports窗口里无效条目?
发表于: 2011-8-27 15:32 4395

[求助]如何删除ida Imports窗口里无效条目?

2011-8-27 15:32
4395
本人调试一款symbian软件,每次调试,ida都会rebase一次基址,但imports不会相应更新,导致又增加了一倍条目,开始还好,但后来越来越多,导致IDA打开极慢。


我查idc帮助和百度都没结果,不知大家有没遇到类似情况,有什么解决办法?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 239
活跃值: (20)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
问题已解决,imports窗口的条目存储是用netnode处理,参考enum_import_names函数实现写了个py脚本:
# -----------------------------------------------------------------------
# 删除imports窗口中无效条目
# Code by Steve on 2011/08/29
#

Imports=idaapi.netnode("$ imports")
iCount=0
iIndex=0

print "import modules:%d" % (Imports.altval(idaapi.BADNODE,idaapi.atag),)

if idaapi.BADNODE!=Imports:
  idx=Imports.alt1st()
  while idx!=idaapi.BADNODE:
    netnum=Imports.altval(idx,idaapi.atag)
    module=idaapi.netnode(netnum)
    nums=module.altval(idaapi.BADNODE,idaapi.atag)
    if nums==0:
      nums=module.altval(idaapi.BADNODE,0x4f)
    if nums==0:
      nums=module.altval(idaapi.BADNODE,idaapi.stag)      
    #print "%x %s(%d Counts)" % (netnum,idaapi.get_import_module_name(iIndex),nums)
    print "%x %s(%d Counts)" % (netnum,Imports.supstr(iIndex,idaapi.stag),nums)
      
    if idaapi.BADNODE!=module:
      mod_idx=module.sup1st()
      while idaapi.BADNODE!=mod_idx:
        szName=Name(mod_idx)
        if not szName:
          szName="del"          
          module.supdel(mod_idx) 
        print " %2d %x ->%s"% (iCount,mod_idx,szName)
        iCount=iCount+1
        mod_idx=module.supnxt(mod_idx)
      
      mod_idx=module.alt1st()
      while idaapi.BADNODE!=mod_idx:
        ea=module.altval(mod_idx)
        szName=Name(ea)          
        if not szName:
          szName="del"
          module.altdel(mod_idx)          
        print " %2d ea:%x %s"% (iCount,ea,szName)
          
        iCount=iCount+1
        mod_idx=module.altnxt(mod_idx)        

      mod_idx=module.sup1st(0x4f)
      while idaapi.BADNODE!=mod_idx:
        szName=Name(mod_idx)
        if not szName:
          szName="del"          
          module.supdel(mod_idx,0x4f) 
        print " %2d %x ->%s"% (iCount,mod_idx,szName)
        iCount=iCount+1
        mod_idx=module.supnxt(mod_idx,0x4f)          
              
    iIndex=iIndex+1     
    idx=Imports.altnxt(idx)
2011-8-30 01:05
0
游客
登录 | 注册 方可回帖
返回
//