PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)lpBase;
PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((DWORD)lpBase + pDosHeader->e_lfanew );
//导出表
if(pNtHeader->OptionalHeader.DataDirectory[0].VirtualAddress !=0)
{
PIMAGE_EXPORT_DIRECTORY pExport = (PIMAGE_EXPORT_DIRECTORY) (lpBase+AddressConvert(lpBase,pNtHeader->OptionalHeader.DataDirectory[0].VirtualAddress,TRUE));
int dwNumberOfFunctions = pExport->NumberOfFunctions;
int dwNumberOfNames = pExport->NumberOfNames;
//函数地址
PDWORD pFunAddr = (PDWORD) (lpBase + AddressConvert(lpBase,pExport->AddressOfFunctions,TRUE));
//函数名地址
PDWORD pFunNameAddr = (PDWORD) (lpBase + AddressConvert(lpBase,pExport->AddressOfNames,TRUE));
//函数序号地址
PWORD pOrdinalAddr = (PWORD) (lpBase + AddressConvert(lpBase,pExport->AddressOfNameOrdinals,TRUE));
for (int i=0;i<dwNumberOfFunctions;i++)
{
printf("函数地址:%.8X\t ",pFunAddr[i]);
int j =0;
for (;j<dwNumberOfNames;j++)
{
if(pOrdinalAddr[j] == i)
{
printf("函数编号:%d\t ",j + pExport->Base);
break;
}
}
if(j!=dwNumberOfNames)//
{
DWORD nameAddr = (DWORD) lpBase + AddressConvert(lpBase,pFunNameAddr[j],TRUE);
printf("%s",nameAddr);
}
printf("\n");
}
}
PE打印导出表函数
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、点击开始,输入cmd,进入控制台。 二、导入文件:导入命令 imp 用户名/密码@网络服务名 file=xxx...
- 以下是我调用的关键程序集 using Microsoft.Office.Core; 根据这个程序集我进行了里面的封...