能力值:
(RANK:1060 )
|
-
-
2 楼
ida作者也写了一个
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
不错,思路清晰,学习了,谢谢。
|
能力值:
(RANK:10 )
|
-
-
4 楼
支持idc脚本。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
8错8错,ding...
|
能力值:
( LV12,RANK:250 )
|
-
-
6 楼
support.
希望以后能看懂
|
能力值:
( LV12,RANK:210 )
|
-
-
7 楼
// 加了点东西, 更容易知道基类拥有的派生类
// author jjnet
#include <idc.idc>
static EnsureMakeDword(ea)
{
MakeUnknown(ea, 4, DOUNK_SIMPLE);
MakeDword(ea);
}
static EnsureMakeStr(ea)
{
auto ea_end;
ea_end = ea;
while(Byte(ea_end)!=0 && ea_end-ea<=255) ++ea_end;
++ea_end; // append tial zero.
MakeUnknown(ea, ea_end-ea, DOUNK_SIMPLE);
MakeStr(ea, ea_end);
}
static CommentRTTI(ea)
{
auto ea1, ea2, ea3, ea4, ea5, count;
EnsureMakeDword(ea);
ea1 = Dword(ea);
EnsureMakeDword(ea1);
EnsureMakeDword(ea1+4);
EnsureMakeDword(ea1+8);
EnsureMakeDword(ea1+12);
EnsureMakeDword(ea1+16);
ea2 = Dword(ea1+12);
EnsureMakeDword(ea2);
EnsureMakeDword(ea2+4);
EnsureMakeStr(ea2+8);
ea3 = Dword(ea1+16);
EnsureMakeDword(ea3);
EnsureMakeDword(ea3+4);
EnsureMakeDword(ea3+8);
EnsureMakeDword(ea3+12);
count = Dword(ea3+8);
ea4 = Dword(ea3+12);
while(count>0)
{
EnsureMakeDword(ea4);
ea5 = Dword(ea4);
EnsureMakeDword(ea5);
EnsureMakeDword(ea5+4);
EnsureMakeDword(ea5+8);
EnsureMakeDword(ea5+12);
EnsureMakeDword(ea5+16);
EnsureMakeDword(ea5+20);
ea4 = ea4 + 4;
count = count -1;
}
EnsureMakeDword(ea4);
return GetString(ea2+8, BADADDR, ASCSTR_C);
}
static main()
{
auto str_type, raw_name, fp, name;
str_type = GetLongPrm(INF_STRTYPE);
SetLongPrm(INF_STRTYPE, ASCSTR_C);
raw_name = CommentRTTI(ScreenEA());
Exec("C:\\111.exe " + raw_name);
fp = fopen("c:\\111.txt", "r");
name = readstr(fp);
fclose(fp);
MakeRptCmt(ScreenEA(), name=="" ? raw_name : name);
ExtLinA(ScreenEA(), 0, "-----------------------------------------------------");
SetLongPrm(INF_STRTYPE, str_type);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
太高深了!!!
|
|
|