- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PE查看工具编写-解密系列【工具篇】解读
工具篇 -- PEInfo 实践是检验学习成果的唯一标准!通过本章节的学习,大家可以学会自己编写一个PE结构的分析工具,这对于理解PE格式和相关原理非常有帮助的^~^ 程序预览:PEInfo.exe 编程思路:文件格式检查 - FileHeader读取 - FileOptionalHeader读取 - 数据目录表读取 - 区块表读取 - 输出表读取 - 输入表读取 工具篇 -- PEInfo PE格式分析工具的编写并不难,主要就是对PE格式的各个结构进行定位。 我们在头文件里边定义了一个MAP_FILE_STRUCT 结构来存放有关信息。 typedef struct _MAP_FILE_STRUCT { HANDLE hFile; // 文件句柄 HANDLE hMapping; // 映射文件句柄 LPVOID ImageBase; // 映像基址 } MAP_FILE_STRUCT, *PMAP_FILE_STRUCT; 文件格式检查 DOS stub - PE IMAGE_DOS_HEADER STRUCT { WORD e_magic // DOS可执行文件标记 。。。。。。 DWORD e_lfanew // 指向PE文件头(+3ch) } PIMAGE_DOS_HEADER ENDS PIMAGE_DOS_HEADER pDH = NULL; 判断pDH - e_magic == ‘MZ’; 并通过 pDH - e_lfanew 找到 IMAGE_NT_HEADERS 文件格式检查 IMAGE_NT_HEADERS STRUCT { DWORD Signature IMAGE_FILE_HEADER FileHeader IMAGE_OPTIONAL_HEADER32 OptionalHeader } PIMAGE_NT_HEADERS ENDS PIMAGE_NT_HEADERS pNTH = NULL; 检测pNTH - Signature == ‘PE’; 至此,我们确定他符合PE文件的特征。 具体C++(API编程即将推出)实现代码: FileHeader 读取 PIMAGE_NT_HEADERS GetNtHeaders(LPVOID ImageBase) { if( !IsPEFile(ImageBase) ) return NULL; PIMAGE_NT_HEADERS pNtH; PIMAGE_DOS_HEADER pDH; pDH = (PIMAGE_DOS_HEADER)ImageBase; pNtH = (PIMAGE_NT_HEADERS)((DWORD)pDH + pDH -e_lfanew); return pNtH; } FileHeader 读取 PIMAGE_FILE_HEADER GetFileHeader(LPVOID ImageBase) { PIMAGE_DOS_HEADER pDH = NULL; PIMAGE_NT_HEADERS pNtH = NULL; PIMAGE_FILE_HEADER pFH = NULL; if( !IsPEFile(ImageBase) ) return NULL; pDH = (PIMAGE_DOS_HEADER)ImageBase; pNtH = (PIMAGE_NT_HEADERS)((DWORD)pDH + pDH - e_lfanew); pFH = pNtH - FileHeader; return pFH; } FileOptionalHeader 读取 PIMAGE_OPTIONAL_HEADER GetOptionalHeader(LPVOID ImageBase) { PIMAGE_DOS_HEADER pDH = NULL; PIMAGE_NT_HEADERS pNtH = NULL; PIMAGE_OPTIONAL_HEADER pOH = NULL; if( !IsPEFile(ImageBase) ) return NULL; pDH = (PIMAGE_DOS_HEADER)Im
您可能关注的文档
最近下载
- 三调土地利用现状分类和三大地类对应.docx
- 日常生活能力量表(ADL)量表.docx VIP
- 围术期感染防控培训课件.pptx VIP
- (高清版)B-T 21109.1-2022 过程工业领域安全仪表系统的功能安全 第1部分:框架、定义、系统、硬件和应用编程要求.pdf VIP
- DLT 5219-2023 架空输电线路基础设计规程.pdf VIP
- 第六单元课外古诗词诵读 课件(共45张ppt)部编版语文九年级上册.pptx VIP
- 科学粤教粤科版六年级上册全册同步训练含答案.docx VIP
- 2.4 第二单元 混合运算 解决问题(1)(课件)2025-2026学年度人教版数学三年级上册.pptx VIP
- 2026中国地震局地质研究所招聘13人考试参考试题附答案解析.docx VIP
- 颈椎间盘突出--中医病历模板.doc VIP
原创力文档


文档评论(0)