首页
社区
课程
招聘
[求助]关于第十章 输出表实例分析
发表于: 2009-6-15 10:49 4495

[求助]关于第十章 输出表实例分析

2009-6-15 10:49
4495

10.7.2这一节讲的不是很详细,我想请教一下:

  在输出表中,怎么用输入表中找到的函数名,利用AddressOfNameOrdinals,Base,AddressOfNames,AddressOfFunctions四项来确定函数的地址。
希望高手们能不吝赐教,在此先行谢过了!

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
书上已经狠详细了,再仔细看看吧
2009-6-16 11:56
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
void printET(LPVOID ImageBase)
{
    PIMAGE_DOS_HEADER pDosHeader=NULL;
    PIMAGE_NT_HEADERS pNtHeaderHeader=NULL;
        PIMAGE_EXPORT_DIRECTORY pExport=NULL;

        pDosHeader=(PIMAGE_DOS_HEADER)ImageBase;
        pNtHeaderHeader=(PIMAGE_NT_HEADERS)((DWORD)pDosHeader+pDosHeader->e_lfanew);
        pExport=GetExportTable(ImageBase);
        if(pExport==NULL)
                return;
        char * pszModuleName=(char *)ImageRvaToVa(pNtHeaderHeader,ImageBase,pExport->Name,NULL);
        printf("模块的真实名称%s\n",pszModuleName);
        int n;
        n=pExport->NumberOfFunctions;
        printf("模块中函数个数:%d\n",n);
        DWORD *AddressF=(DWORD *)ImageRvaToVa(pNtHeaderHeader,ImageBase,pExport->AddressOfFunctions,NULL);
        DWORD *AddressName=(DWORD *)ImageRvaToVa(pNtHeaderHeader,ImageBase,pExport->AddressOfNames,NULL);
        WORD *AddressNameO=(WORD *)ImageRvaToVa(pNtHeaderHeader,ImageBase,pExport->AddressOfNameOrdinals,NULL);
        for(int i=0;i<n;i++)
        {
                printf("函数的名称:%-30s,地址:%-4x,顺列号:%d\n",
                        (char *)ImageRvaToVa(pNtHeaderHeader,ImageBase,*AddressName,NULL),*AddressF,*AddressNameO);
                AddressName++;
                AddressF++;
                AddressNameO++;
        }
   
}
2009-6-16 12:13
0
雪    币: 290
活跃值: (41)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
個人發了一個Pe文件註解,
這是我的筆記,不妨下來看看
希望對你有用
2009-7-25 08:47
0
游客
登录 | 注册 方可回帖
返回
//