PE--导入表
来源:互联网 发布:python 打开文件函数 编辑:程序博客网 时间:2024/05/17 23:47
- 遍历导入表信息
/////////////////读取导入表信息///////////////////////VOID _GetImportInfo(PVOID pFileBuffer){ PIMAGE_DOS_HEADER pDosHeader = NULL; PIMAGE_NT_HEADERS pNtHeaders = NULL; PIMAGE_IMPORT_DESCRIPTOR pImportDes = NULL; PDWORD pThunkData = NULL; PIMAGE_IMPORT_BY_NAME pImportByName = NULL; PSTR ImportName = NULL; pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer; if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) { printf("not a mz header!\n"); return ; } pNtHeaders = (PIMAGE_NT_HEADERS)((DWORD)pDosHeader + pDosHeader->e_lfanew); if (pNtHeaders->Signature != IMAGE_NT_SIGNATURE) { printf("not a ntpe header!\n"); return ; } //导入表的位置 pImportDes = (PIMAGE_IMPORT_DESCRIPTOR)((DWORD)pFileBuffer+(_RVAToOffset(pFileBuffer, pNtHeaders->OptionalHeader.DataDirectory[1].VirtualAddress))); while (pImportDes->Name!=0) { ImportName = (LPSTR)((DWORD)pFileBuffer + (_RVAToOffset(pFileBuffer, pImportDes->Name))); printf("导入表:%s\n", ImportName); pThunkData = PDWORD((DWORD)pFileBuffer+(_RVAToOffset(pFileBuffer, pImportDes->OriginalFirstThunk))); while (*pThunkData!=0) { //偏移 if ((*pThunkData & 0x80000) == 0) { pImportByName = (PIMAGE_IMPORT_BY_NAME)((DWORD)pFileBuffer + (_RVAToOffset(pFileBuffer, *pThunkData))); printf("序号:%x %s\n", pImportByName->Hint, pImportByName->Name); } else if ((*pThunkData&0x80000)!=0) { printf("名字:%s\n", (PSTR)pThunkData); } pThunkData++; } pImportDes++; }}
本文是学习笔记,有错误的地方请不吝赐教!
0 0
- PE文件导入表
- PE导入表
- 【PE学习-------导入表】
- PE 导入表
- PE--导入表
- PE文件结构详解-PE导入表
- PE学习1-导入表
- PE学习日记----导入表
- PE文件,导入表定位
- PE增加导入表注入
- PE总结 – 导入表
- PE文件结构详解(四)PE导入表
- PE文件结构详解(四)PE导入表
- PE文件结构详解(四)PE导入表
- PE文件结构详解(四)PE导入表
- PE文件结构详解(四)PE导入表
- PE文件结构详解(四)PE导入表
- PE总结11--PE文件结构之 解析导入表
- 学习网站
- swift 往系统日历中添加提醒事项
- 3.7V锂电池使用中电量与电压关系
- 转发和重定向引发关于Servlet中的request和response的思考
- mysql 存储过程 函数 触发器
- PE--导入表
- 错误:has text relocations
- 理解chroot
- hdu 1716 排列2 (全排列)
- 【T_SQL】 基础
- notepad++突然崩溃,保存的文件没了怎么办
- esayui from 提交 ie提示下载
- 信息管理系统.0.0
- iOS UIControl 几个事件的说明