首页
社区
课程
招聘
[求助]关于IDA的注释如何转移到OD中的问题
发表于: 2008-1-22 09:12 10798

[求助]关于IDA的注释如何转移到OD中的问题

2008-1-22 09:12
10798

使用IDA的map文件好像只是生成label可以转到OD中。
那么comment如何转到OD中呢?
发到新兵论坛没有响应,发到这里请高手指点下。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 254
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
wangdell,你想过用插件完成这个想法吗?
貌似od插件接口也支持添加注释的。

PS:我是低手。
2008-3-6 11:00
0
雪    币: 254
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
个人的一些幼稚理解,供各位朋友参考讨论。
      昨天晚上想了想,今天上午认真看了OD的SDK文档,
和IDA的SDK接口。
      IDA的bytes.hpp头文件中的get_cmt接口可以获取
被反汇编文件中的指定地址的注释,定义如下:

// Get an indented comment
//      ea     - linear address. may point to tail byte, the function
//               will find start of the item
//      rptble - get repeatable comment?
//      buf - output buffer, may be NULL
//      bufsize - size of output buffer
// Returns: size of comment or -1

idaman ssize_t ida_export get_cmt(ea_t ea, bool rptble, char *buf, size_t bufsize);

     然后又在OD的SDK文档中,发现一组名为Name functions的接口中有一个
叫做Insertname的函数,定义如下:

int Insertname(ulong addr,int type,char *name);

     addr是虚拟地址,type若设置为NM_COMMENT,就可在指定地址处添加自定义的
注释,name为注释的内容。

     有了这两个接口,就简单测试了一下,先用IDA 4.9反汇编了w2k下的扫雷程序
winmine.exe,然后在winmine的WinMain函数中,0x1001426地址处,手动添加了“模块句柄”一行注释,
           
如图



    然后用get_cmt在IDA插件中,获取这个地址的注释,如下:
    /************************************************************************/
    /*                                                                      */  
    /*  !注意:测试起见,addr变量用了硬编码                                 */
    /*                                                                      */
    /************************************************************************/ 
    
    ea_t    addr = 0x1001426;   
    char    comment[MAXSTR];    // 保存注释的缓冲区
    
    // 获取指定地址的注释
    get_cmt(addr, false, comment, MAXSTR);

    msg("%x处的注释为:%s", addr, comment);

     运行这段代码后,IDA的日志窗口显示了刚才手动添加的注释,

如下图:



    接下来就是测试OD的添加注释接口了,我简单修改了olly提供的
cmdline插件源代码中的ODBG_Pluginaction函数,在其中一个分支
里添加如下代码,

    /************************************************************************/
    /*                                                                      */  
    /*  !注意:测试起见,Insertname函数用了硬编码                           */
    /*                                                                      */
    /************************************************************************/ 
      Insertname( 0x1001426, NM_COMMENT, "模块句柄");

      这样,编译好修改后的cmdline插件,当祭起OD的时候,
用OD加载winmine,运行插件,然后就可以看到OD里面也自动
添加了注释。
      个人的一些简单想法,供wangdell和各位朋友参考讨论。
上传的附件:
2008-3-7 11:49
0
雪    币: 87
活跃值: (47)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
4
非常感谢terren的回复。学习了。
OD的插件没弄过,所以想看看大家有没有什么已有的工具。就不用自己去写插件了。呵呵。
看来comment是有方法转移了。
另一个问题:就是IDA下的重命名的变量名或结构体名,入口参数等,有方法转吗?
2008-3-7 13:04
0
雪    币: 254
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
这阵子,我陷到插件的泥沼中了,干什么都想用插件,
怎么没想到学习前人的工作成果?
      刚才搜索了IDA加载map文件,才发现有一个
名为GODUP的OD插件,flyODBG里面收了这个
插件,不知道你是否用的就是这个插件,里面有一个
Load comments的菜单选项,可以载入注释。
      你提到的重命名的变量名,结构体和入口参数,
不知道IDA和GODUP支持与否。
2008-3-7 16:14
0
雪    币: 87
活跃值: (47)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
6
godup有这个get comment的功能,但IDA好像没有生成带comment文件的功能,我想写个插件或idc脚本吧comment转成txt文件,但不知godup需要的文件格式,无法对接。
恐怕都得自己写了.....
2008-3-7 16:19
0
雪    币: 254
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
呵呵,主意不错。
2008-3-7 16:34
0
雪    币: 3542
活跃值: (1867)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
8
好像GODUP可以引入由DEDE生成的带注释的MAP文件,楼主不妨参考下。
2008-3-8 19:16
0
雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
GODUP 和 MapConv 这两个插件都可以完成这件工作,不过都处于"关注..."状态了,期待楼主的新发现
2008-3-31 22:47
0
游客
登录 | 注册 方可回帖
返回
//