当前位置: 首页 > news >正文

专业网站制作案例中国能源建设招标网站

专业网站制作案例,中国能源建设招标网站,商丘网站建设运营公司,百度托管公司文章目录 前言一、什么是Windows PE格式中的导出表#xff1f;二、解析导出表并显示1.导出表的结构2.解析导出表3.显示导出表 前言 通过分析和解析Windows PE格式#xff0c;并使用qt进行图形化显示 一、什么是Windows PE格式中的导出表#xff1f; PE文件格式的导出表是P… 文章目录 前言一、什么是Windows PE格式中的导出表二、解析导出表并显示1.导出表的结构2.解析导出表3.显示导出表 前言 通过分析和解析Windows PE格式并使用qt进行图形化显示 一、什么是Windows PE格式中的导出表 PE文件格式的导出表是PE文件中用于记录程序导出函数信息的数据结构。导出表位于数据目录表的第一项索引值为0。导出表记录了当前文件对外开放的函数接口使得其他程序可以通过这些接口调用该文件中的函数。 二、解析导出表并显示 1.导出表的结构 IMAGE_EXPORT_DIRECTORY结构体包含了导出表的特征、时间戳、版本号、导出函数数量、导出函数名称数量、导出函数地址表、导出函数名称表和导出函数序号表等信息。IMAGE_EXPORT_DIRECTORY的定义如下 typedef struct _IMAGE_EXPORT_DIRECTORY {DWORD Characteristics;DWORD TimeDateStamp;WORD MajorVersion;WORD MinorVersion;DWORD Name;DWORD Base;DWORD NumberOfFunctions;DWORD NumberOfNames;DWORD AddressOfFunctions; // RVA from base of imageDWORD AddressOfNames; // RVA from base of imageDWORD AddressOfNameOrdinals; // RVA from base of image } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;IMAGE_EXPORT_DIRECTORY中的字段包括 Characteristics导出表的特征值用于描述导出表的特性。 TimeDateStamp时间戳表示导出表创建或最后修改的时间。 MajorVersion和MinorVersion导出表的主次版本号用于标识导出表的版本信息。 Name导出表的名称通常为一个字符串用于描述导出表的功能或用途。 Base导出表中函数的起始序号用于定位导出函数在文件中的位置。 NumberOfFunctions导出表中导出的函数数量。 NumberOfNames以名称导出的函数数量。 AddressOfFunctions导出函数地址表在文件中的虚拟地址。 AddressOfNames导出函数名称表在文件中的虚拟地址。 AddressOfNameOrdinals导出函数序号表在文件中的虚拟地址。 2.解析导出表 bool PEParser::parserFileData(const QByteArray fileData) {//判断是否是MZ开头的文件if (fileData.left(2) ! MZ){return false;}//解析DOS头parserDOSHeader(fileData.left(sizeof(IMAGE_DOS_HEADER)));//DOSStub数据m_dosStubData fileData.mid(sizeof(IMAGE_DOS_HEADER), m_dosHeader.e_lfanew - sizeof(IMAGE_DOS_HEADER));long peAddress m_dosHeader.e_lfanew;if (fileData.mid(peAddress, 2) ! PE){return false;}m_fileData fileData;//去除前4个字节的PE头标识long fileHeaderIndex peAddress 4;//记录文件头索引m_fileHeaderIndex fileHeaderIndex;//解析标准PE文件头paserFileHeader(fileData.mid(fileHeaderIndex, sizeof(IMAGE_FILE_HEADER)));//解析扩展PE文件头long optionHeaderIndex fileHeaderIndex sizeof(IMAGE_FILE_HEADER);//记录扩展PE文件头索引m_optionHeaderIndex optionHeaderIndex;//解析扩展PE文件头parserOptionHeader(fileData.mid(optionHeaderIndex, m_fileHeader.SizeOfOptionalHeader));//解析节表long sectionHeaderIndex optionHeaderIndex m_fileHeader.SizeOfOptionalHeader;//节表结构在文件中开始的偏移m_sectionHeaderIndex sectionHeaderIndex;//解析节表parserSectionHeader(fileData.mid(sectionHeaderIndex,m_fileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER)));//解析数据目录parserDataDirectory();//解析导出表parserExportTable();return true; }void PEParser::parserExportTable() {DWORD address 0;if (m_x86Flag){address m_optionalHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;}else{address m_optionalHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;}if (address 0){return;}//将虚拟地址转换为文件地址RVA2FOAInfo info RVA2FOA(address);//获取导出表数据IMAGE_EXPORT_DIRECTORY exportTable;memcpy(exportTable, m_fileData.data() info.FOA, sizeof(IMAGE_EXPORT_DIRECTORY));QListDWORD functionAddressList;QListWORD functionOrdinalsList;//获取导出函数序号表数据info RVA2FOA(exportTable.AddressOfNameOrdinals);QByteArray ordinalsTempData m_fileData.mid(info.FOA, exportTable.NumberOfFunctions * sizeof(WORD));//获取导出函数地址表数据info RVA2FOA(exportTable.AddressOfFunctions);QByteArray addrTempData m_fileData.mid(info.FOA, exportTable.NumberOfFunctions * sizeof(DWORD));//遍历导出表中导出函数的数据for (int i 0; i exportTable.NumberOfFunctions; i){DWORD addr 0;memcpy(addr, addrTempData.data() i * sizeof(DWORD), sizeof(DWORD));functionAddressList.append(addr);WORD ordinal 0;memcpy(ordinal, ordinalsTempData.data() i * sizeof(WORD), sizeof(WORD));functionOrdinalsList.append(ordinal);}//获取导出函数名称表数据info RVA2FOA(exportTable.AddressOfNames);QByteArray nameTempData m_fileData.mid(info.FOA, exportTable.NumberOfFunctions * sizeof(DWORD));//遍历导出表中以名称导出的数据QListExportFunctionInfo exportFunctionInfo;for (int i 0; i exportTable.NumberOfNames; i){DWORD nameRVA 0;memcpy(nameRVA, nameTempData.data() i * sizeof(DWORD), sizeof(DWORD));DWORD nameFOA RVA2FOA(nameRVA).FOA;int index m_fileData.indexOf(\0, nameFOA);ExportFunctionInfo info;info.name m_fileData.mid(nameFOA, index - nameFOA);info.address functionAddressList[functionOrdinalsList[i]];info.ordinal functionOrdinalsList[i];exportFunctionInfo.append(info);}//按序号排序std::sort(exportFunctionInfo.begin(), exportFunctionInfo.end(), [](const ExportFunctionInfo info1, const ExportFunctionInfo info2) - bool{return info1.ordinal info2.ordinal;});emit sendExportTable(exportFunctionInfo); }3.显示导出表 void MainWindow::showExportTable(const QListExportFunctionInfo exportTable) {ui-tableWidget_exportTable-clearContents();ui-tableWidget_exportTable-setRowCount(0);for (int i 0; i exportTable.size(); i){ui-tableWidget_exportTable-insertRow(i);ui-tableWidget_exportTable-setItem(i, 0, new QTableWidgetItem(exportTable[i].name));ui-tableWidget_exportTable-setItem(i, 1, new QTableWidgetItem(QString::asprintf(%08lX, exportTable[i].address)));ui-tableWidget_exportTable-setItem(i, 2, new QTableWidgetItem(QString::asprintf(%08lX, exportTable[i].ordinal)));} }
http://www.dnsts.com.cn/news/174141.html

相关文章:

  • 网站设计前期沟通单致远oa协同管理系统
  • 深互动平台网站音乐wordpress
  • 中国空间站天宫课堂抖音网站开发
  • 深圳网站建设top028哪个网站可以做免费请帖
  • 网站快速排名北京优化健康宝
  • 门户网站建设的报价中小企业信息服务平台
  • 额尔古纳网站建设价格wordpress会员微信支付
  • 健康网站 模板表白网页生成制作
  • 李宁网站开发ppt模板网站联盟三要素
  • 广州网站开发设计公司可以做科学模拟实验的网站
  • 两新支部网站建设wordpress 百度音乐
  • 泰安网站建设哪家快便民网免费发布信息
  • 商城网站开发视频家居网站建设如何
  • 网站建设专家收费标准免费网站推广平台
  • 免费企业网站创建进一步推进网站建设
  • 做贷款网站犯法吗做网站开发需要培训吗
  • wordpress上传网站模板在线设计公司logo图标
  • 南屏网站建设wordpress 下载页面模板怎么用
  • .net网站开发实例网站建设策划书在哪济南兴田德润实惠吗
  • 竹子建站seo设置怎么做h5制作软件会给源代码吗
  • 温州建网站做彩票网站模板
  • 广东网站建设商家青岛seo杭州厂商
  • 网站的规划建设如何布局做名片哪个网站可以找
  • 一个网站建设大概需要多少费用做解析视频网站怎么赚钱
  • 风铃网做微网站要钱吗免费com网站域名注册
  • 佛山外贸网站制作网页效果图制作
  • 网站首页源码定制做网站费用
  • 国外网站建设现状吉安市城乡建设局网站
  • 天津制作公司网站wordpress 安装 此网页包含重定向循环
  • 网站运营设计阿里巴巴网站建设改图片