首页
社区
课程
招聘
[求助]遍历win64的PE的导入表
发表于: 2017-5-22 16:14 2508

[求助]遍历win64的PE的导入表

2017-5-22 16:14
2508
PIMAGE_THUNK_DATA target_trunk = (PIMAGE_THUNK_DATA)RvaToFileAddress(import_table[i].OriginalFirstThunk);
    int n = 0;
    bool found_func = false;
    while (target_trunk[n].u1.Ordinal != 0)
    {
        logptr("ord  :", (void*)target_trunk[n].u1.Ordinal);
        if (target_trunk[n].u1.Ordinal & 1 << 31)
        {

        }
        else
        {
            PIMAGE_IMPORT_BY_NAME func_name = (PIMAGE_IMPORT_BY_NAME)RvaToFileAddress(target_trunk[n].u1.AddressOfData);
            /*
            typedef struct _IMAGE_IMPORT_BY_NAME {
            WORD    Hint;
            CHAR   Name[1]; //类似余变长数组的trick,在语法中Name标示起始地址
            } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
            */
            logdstr("got function:", func_name->Name);
            if (strcmp(func_name->Name, funcname) == 0)
            {
                found_func = true;
                logdstr("got match:", funcname);
                break;
            }
        }
        n++;
    }

64位,获取kernel32.dll的导入表首地址OriginalFirstThunk后,以上面的方法遍历该地址的IMAGE_THUNK_DATA对象,发现只能找到一个导入函数,第二个IMAGE_THUNK_DATA是0,user32.dll也是如此,不知道是我遍历的方式有问题,还是什么其他的地方有问题



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//