能力值:
( LV9,RANK:1210 )
2 楼
set_cmt
有篇E文的教程,名字记不住了自己找找
也可以翻翻SDK的头文件
能力值:
( LV8,RANK:122 )
3 楼
谢谢, 可以了
能力值:
( LV2,RANK:10 )
4 楼
可以了就写出来,让我们这些菜鸟也学习一下嘛
能力值:
( LV4,RANK:50 )
5 楼
以下头函数定义摘自IDA SDK 5.1
//--------------------------------------------------------------------------
// I N D E N T E D C O M M E N T S
//--------------------------------------------------------------------------
// Set an indented comment
// ea - linear address 有效地址,比如在IDA的反汇编代码中,
// 有这么一行:.text:00404108 push ebp
// 则有效地址即为404108。
//
// comm - comment string 要添加的注释内容。
//
// rptble - is repeatable? 是否设置成可重复性注释,设置为true,则是可重复性注释
// returns: 1-ok, 0-failure 返回1表示成功,0表示错误。
idaman bool ida_export set_cmt(ea_t ea, const char *comm, bool rptble);
楼上的朋友,可能你已经知道怎么用这个set_cmt函数,下面的代码十分简单地在IDA光标所在的一行,添加了可重复性注释,
ea_t current = get_screen_ea(); //返回当前光标所在的有效地址,
bool ret = set_cmt(current, "添加成功", true);
if (ret)
{
info("添加注释成功");
}
else
{
warning("添加注释错误");
}
能力值:
( LV9,RANK:1210 )
6 楼
repeatable==可重复
能力值:
( LV4,RANK:50 )
7 楼
softworm,谢谢你指出我的错误,
是我翻译错误了,repeatable是你解释的这个意思,”重复的“。
我有一点不明白的是,
好像在IDA里按下分号键,就弹出repeatable comment对话框,
比如输入“逆向”二字,注释显示 “逆向”。
再在同一行,按下Shift+分号键,则弹出一个Enter comment对话框,
输入“工程”二字,注释就被覆盖成 “工程",刚才输入的”逆向“,就看不到了,
而且,按下分号键,还能看到,”逆向“还在那里。
这样感觉,就好象有点被替换的感觉,为什么会这样的 设计?
能力值:
( LV9,RANK:1210 )
8 楼
按分号输入的注释,所有交叉参考处都会出现,按冒号(你的是Shift+分号? 我不知道
)
的注释只在该处出现,如果一个地址有2种注释,在该地址只会显示非重复注释.
我只是随手写的,没有查帮助,希望没错
能力值:
( LV4,RANK:50 )
9 楼
是啊,经过一些简单测试,正如你所说,可重复注释
添加在一个有参考引用的地址,那么被参考引用的地方
也会出现同样的注释。
形如:
0040EA21 jnz short loc_40EA3F ; 测试
……
0040EA3F loc_40EA3F: ; CODE XREF: sub_40E9B0+71j
0040EA3F cmp edi, ebx ; 测试
在40EA3F处的“测试”二字是手动添加的,而0040EA21处的注释,
则是IDA自动添加的。
而非重复性注释,则IDA不会自动添加注释。
softworm,你说的是正确的。
能力值:
( LV2,RANK:150 )
10 楼
很想很想好好学学IDA SDK,但是我不怎么喜欢这样编写代码
想问一下,IDA的SDK一共有多少个API?我上次看到一篇文章,如何用VB和C#编写IDA插件的,原理其实就是做一个COM,然后真正的插件是C++写的,负责调用那个COM,也就是一个代理而已。如果API不多,我想做一个支持全部API的C++代理,方便使用C#来编写IDA插件^_^
还有,IDA的API函数在不同的版本更新是否频繁?
如果只有几十个、一百多个,并且更新不频繁的话,肯定很容易做到的。
能力值:
( LV4,RANK:50 )
11 楼
nnhy,你说的比较高深,C#和COM这些我都不懂,
你的想法可能会很高效,支持你的思路,如果需要我做
什么,你说一声,你说在这个帖子里讨论具体细节如何?
我们也好跟你学习COM和C#。
:)
能力值:
( LV9,RANK:1210 )
12 楼
我觉得这样反而更复杂了
能力值:
( LV2,RANK:150 )
13 楼
如果这是一个简单的功能,当然是C++来的简单,但是如果要做一些比较强大一点的功能,代码量非常多的那种,可就是C#好写了,并且还可以借助强大的开发工具。
我分析软件绝大多数都是使用IDA,很少使用OD。在用IDA的时候,经常需要做很多无聊的重复的手工工作,我就想着以后用插件来实现它^_^
用C#来写插件,效率肯定比C++要低,但是它更适合于构架一个很复杂的程序而不至于显得零乱。
其实我的C++用起来比C#还要熟悉得多
能力值:
( LV4,RANK:50 )
14 楼
nnhy,你认为C#可以设计IDA插件的UI界面的吗?
C#和COM,有什么入门书籍吗?指导一下?
能力值:
( LV2,RANK:150 )
15 楼
这个东西,不是认为可以不可以,而是我实际上已经做出来了。
相关的技术难点我也已经一一记录下来了,剩下的工作,我需要有人来帮忙
能力值:
( LV2,RANK:10 )
16 楼
我以前也遇到过这个问题
能力值:
( LV4,RANK:50 )
17 楼
唉,机器也没得用,nnhy说的正事,我差点忘了。
见鬼,这阵子,在下过得跟老鼠一样,每天找工作,
送维修好的机器到客户家,车费还得自己出。
up nnhy。
能力值:
( LV4,RANK:50 )
18 楼
nnhy,希望你能成功,要我做什么,就说吧。
能力值:
( LV2,RANK:150 )
19 楼
呵呵,我睡得晚,想不到你比我更晚。
其实我已经成功了一半,至少我成功导出函数,成功在IDA上显示C#做的界面了。
只是,我现在是手工在C++中添加导出函数的,如果能自己把IDA的函数导出来就好了。
如果你要帮忙的话,最好能把所有函数整理一下^_^,然后我写程序去读取,生成c++代码,再编译导出。
目前正在全力研究一个分析COM生成IDC的程序,几乎已经完成了,过几天发布,同时提供源码下载。 今天上来是有一个问题,如何使用IDC在结构体成员中添加注释?这里没有地址行,不知道该怎么做。既然手工可以添加,我想IDC应该也可以。
能力值:
( LV2,RANK:150 )
20 楼
可以试一试如下两个IDC函数:
SetMemberComment 和 SetStrucComment。
long SetMemberComment(long id,long member_offset,string comment,long repeatable);
long SetStrucComment(long id,string comment,long repeatable);
能力值:
( LV4,RANK:50 )
21 楼
自己up一下.
能力值:
( LV2,RANK:10 )
22 楼
通过callui(ui_get_hwnd).vptr可以获得IDA窗口句柄,直接创建子窗口就行了.