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

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

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

[2022冬季班]《安卓高级研修班(网课)》月薪两万班招生中~

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 240
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
terren 活跃值 1 2008-3-6 11:00
2
0
wangdell,你想过用插件完成这个想法吗?
貌似od插件接口也支持添加注释的。

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