能力值:
( LV2,RANK:150 )
|
-
-
2 楼
原来在DllEntry.cpp中是这样模拟SegEnd()的:
static ea_t SegEnd(eat ea)
{
area_t *area = segs.get_area();
return segs.endEA;
}
后来发现可以用针对段操作的SDK API getseg(), 其原型为:
inline segment_t *getseg(ea_t ea);
它实际上返回的是(segment_t *)segs.get_area(ea);
于是可以这样构造SegEnd():
static ea_t SegEnd(eat ea)
{
ea_tsegend_ea;
segment_t *segm = getseg(ea);
if(segm != NULL)
segend_ea = segm->endEA; // API 调用正常
else
segend_ea = BADADDR; // 考虑出错情况
return senend_ea;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
学习下。。。
|
能力值:
( LV2,RANK:140 )
|
-
-
4 楼
这就是重写了一遍啊~~~~~
plugin和脚本孰优孰劣?
|
能力值:
( LV2,RANK:150 )
|
-
-
5 楼
plugin和脚本孰优孰劣每个人有不同的看法,不可强求。这里仅是为了学习这两种编程方法而已,想通过这个例子为进一步的学习积累一点经验。因为IDC有一些帮助信息可以参考,而IDA SDK plugins没有任何资料可查,完全靠头文件中的信息去猜想API调用的方法,因此开发难度较大。
个人认为IDC兼容性较好,但执行速度较慢。SDK plugins执行速度较快,但不同版本之间的兼容性不好。执行速度上有点像VB中的p-code与编译后的二进制程序之间的差别。
|
|
|