首页
社区
课程
招聘
如何在IDA Pro的注释中执行批量替换?
发表于: 2005-10-3 10:59 5269

如何在IDA Pro的注释中执行批量替换?

2005-10-3 10:59
5269
我在用IDA Pro进行逆向工程的过程中,常常会碰到这样的情况,刚开始分析的时候,得到了一个结构,猜测它可能与文件有关,所以命名为CFileInfo,然后在后续的逆向过程中,在所有的comment中都用CFileInfo来说明和这个结构有关的所有操作。但是,随着逆向的深入,发现这个结构其实是用于网络数据传输的,其中只有一个成员变量和本地文件有关,所以打算把结构重新命名为CNetDataTransfer。重命名后,IDA Pro可以自动把程序中所有使用CFileInfo结构的地方自动改为CNetDataTransfer,但是在注释中,以及在函数的声明中,却无法自动改名,请问有什么方法能够将这些地方的结构名也进行自动改变,或者说能否执行文本的批量替换(如果采用手工修改的方法,由于逆向的工程本身就比较大,所以改起来很麻烦)。

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
黑老大会,帮你顶
2005-10-3 17:43
0
雪    币: 47147
活跃值: (20470)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
黑老大可是传说中的IDC脚本王子,前段时间还得到过他的帮助,真是受益非浅!

IDA中最常见的注释有:
repeatable comment
regular comment

用Comment()函数可以取得regular comment注释,而repeatable comment注释用RptCmt()取得。

下面一段IDC可以将regular comment注释替换掉。

static replacecomm(from ,to,old_cmd,new_cmd)
{
  auto ea,cmt,rcmt ;
  for (ea=from;ea<to;)
  {
    cmt = Comment(ea);   
    rcmt = RptCmt(ea);

    if(cmt ==old_cmd || rcmt== old_cmd)
    {
         Message("-> %s\n",cmt );  
         MakeComm (ea,new_cmd);
    }

    ea=NextNotTail(ea);
  }
  Message("OK!");
}
命令格式示例:
replacecomm(0x0040121B,0x401231,"pediy","test");
2005-10-4 10:25
0
游客
登录 | 注册 方可回帖
返回
//