首页
社区
课程
招聘
[旧帖] [IDA插件]IDA如何批处理? 0.00雪花
发表于: 2008-11-13 10:03 4105

[旧帖] [IDA插件]IDA如何批处理? 0.00雪花

2008-11-13 10:03
4105
小弟写了一个插件,打印WinMain()或DllMain()的VA,代码很简单:
void IDAP_run(int arg)
{
    // 插件的实体

    // 循环遍历所有函数,看每个函数名是否包含"WinMain"或"DllMain",是就打印名称和VA
    for (size_t f = 0U; f < get_func_qty(); f++)
    {
        char funcName[MAXSTR];
        // getn_func() 返回由函数序号指定的func_t结构
        func_t *curFunc = getn_func(f);
        // get_func_name()获取函数名,并存储到funcName
        get_func_name(curFunc->startEA, funcName, sizeof(funcName)-1);
        if(NULL != strstr(funcName, "WinMain") || NULL != strstr(funcName, "DllMain"))
        {
            msg("%s:\t%a\n", funcName, curFunc->startEA);
            break;
        }
    }

    return;
}

但是IDA插件是依赖IDA的,而IDA每次只处理一个文件,IDA SDK里的各种数据结构也只是针对一个文件才有意义。我想问一下,IDA SDK可不可针对一个目录下的N个EXE自动进行处理,生成idb文件,并对每一个文件运行我的插件,打印出我想要的信息。

    我看了下IDC脚本,它貌似也是依赖单一文件的,依赖IDA的。IDAPython也是,也是依赖IDA的,都只能一次处理一个文件。

    大家有没有好的方法,能利用IDA批量抽取一坨PE文件的信息?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
2
没尝试过,不过貌似可以写段代码不断用ida开启指定目录下的文件,分析完一个后保存退出继续下一个
不过如果你只要WinMain或DllMain的VA不如自己写两行代码读EP然后自己处理了,何必还用IDA阿
2008-11-13 10:43
0
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你说读EP,是指EntryPoint吗?我把代码改成如下:
// 循环遍历每个入口点
    for (size_t e = 0U; e < get_entry_qty(); e++)
    {
        char entryName[MAXSTR];
        int ord = get_entry_ordinal(e);
        get_entry_name(ord, entryName, MAXSTR - 1);
        // 显示入口点地址和名称
        msg("Entry point %a: %s\n", get_entry(ord), entryName);
    }

发现打印出的只是mainCRTStartup,wmainCRTStartup,或DllEntryPoint,它打印出来的是PE头部+28偏移处指向的入口点函数而已,根本不包含WinMain,main,或DllMain了。

你说用代码不断用IDA打开文件,保存,退出,是我现在努力的方向。
2008-11-13 15:06
0
游客
登录 | 注册 方可回帖
返回
//