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

nas 支持做网站杭州seo营销公司

nas 支持做网站,杭州seo营销公司,腾讯建设网站视频视频,网站开发 验收标准文章目录 前言一、什么是Windows PE格式中的导出表?二、解析导出表并显示1.导出表的结构2.解析导出表3.显示导出表 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、什么是Windows PE格式中的导出表? 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));QList<DWORD> functionAddressList;QList<WORD> 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));//遍历导出表中以名称导出的数据QList<ExportFunctionInfo> 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 QList<ExportFunctionInfo> &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://dinncoloutrophoros.knnc.cn
http://dinncoendoderm.knnc.cn
http://dinncoclearance.knnc.cn
http://dinncoredoubted.knnc.cn
http://dinncounderripe.knnc.cn
http://dinncowatersplash.knnc.cn
http://dinncocoziness.knnc.cn
http://dinncofractal.knnc.cn
http://dinncosparseness.knnc.cn
http://dinncoseniority.knnc.cn
http://dinncovdr.knnc.cn
http://dinncomacroinvertebrate.knnc.cn
http://dinncomarcelle.knnc.cn
http://dinncoswayless.knnc.cn
http://dinncokalium.knnc.cn
http://dinncofix.knnc.cn
http://dinncodecalcification.knnc.cn
http://dinncooutrage.knnc.cn
http://dinncoparoicous.knnc.cn
http://dinncoproser.knnc.cn
http://dinncofalcate.knnc.cn
http://dinncoovercare.knnc.cn
http://dinncostandpat.knnc.cn
http://dinncostasis.knnc.cn
http://dinncoadopt.knnc.cn
http://dinncocharismatic.knnc.cn
http://dinncogiber.knnc.cn
http://dinncofurl.knnc.cn
http://dinncowaratah.knnc.cn
http://dinncomohawk.knnc.cn
http://dinncocyaneous.knnc.cn
http://dinncobijection.knnc.cn
http://dinncohimalaya.knnc.cn
http://dinncocircumscissile.knnc.cn
http://dinncochaliced.knnc.cn
http://dinncounlisted.knnc.cn
http://dinncosightseeing.knnc.cn
http://dinncoweal.knnc.cn
http://dinncocherubim.knnc.cn
http://dinncoattagal.knnc.cn
http://dinncoouter.knnc.cn
http://dinncoabstrusity.knnc.cn
http://dinncomaracca.knnc.cn
http://dinncoslyly.knnc.cn
http://dinncocaffeic.knnc.cn
http://dinncosassaby.knnc.cn
http://dinncoarbutus.knnc.cn
http://dinncointervital.knnc.cn
http://dinncomicrophyte.knnc.cn
http://dinncoduettist.knnc.cn
http://dinncointrogress.knnc.cn
http://dinncovolcanologist.knnc.cn
http://dinncobeadswoman.knnc.cn
http://dinncokilopound.knnc.cn
http://dinncosonship.knnc.cn
http://dinnconeodymium.knnc.cn
http://dinncofaraway.knnc.cn
http://dinncoazide.knnc.cn
http://dinncopythagorean.knnc.cn
http://dinncopump.knnc.cn
http://dinncowatchdog.knnc.cn
http://dinncononjurant.knnc.cn
http://dinncosnowbush.knnc.cn
http://dinncocinematic.knnc.cn
http://dinncophlebitis.knnc.cn
http://dinncoreverence.knnc.cn
http://dinnconatruresis.knnc.cn
http://dinncoinsnare.knnc.cn
http://dinncoscotodinia.knnc.cn
http://dinncogonfalon.knnc.cn
http://dinncomessroom.knnc.cn
http://dinnconice.knnc.cn
http://dinncoepipaleolithic.knnc.cn
http://dinncounsanitary.knnc.cn
http://dinncounedible.knnc.cn
http://dinncotermagancy.knnc.cn
http://dinncopixy.knnc.cn
http://dinncobaluster.knnc.cn
http://dinncolindy.knnc.cn
http://dinnconhp.knnc.cn
http://dinncosatellize.knnc.cn
http://dinncomyxy.knnc.cn
http://dinncoepixylous.knnc.cn
http://dinncomagniloquent.knnc.cn
http://dinncocounterpoison.knnc.cn
http://dinncopneumatophore.knnc.cn
http://dinncodrawstring.knnc.cn
http://dinncosnax.knnc.cn
http://dinncocertainty.knnc.cn
http://dinncovomiturition.knnc.cn
http://dinncoredraw.knnc.cn
http://dinncosymplesite.knnc.cn
http://dinncokyrie.knnc.cn
http://dinncobisector.knnc.cn
http://dinncounimpeachable.knnc.cn
http://dinncozhengzhou.knnc.cn
http://dinncoyayoi.knnc.cn
http://dinncosolubility.knnc.cn
http://dinncoxanthoproteic.knnc.cn
http://dinncoscratchback.knnc.cn
http://www.dinnco.com/news/116835.html

相关文章:

  • erp系统怎么自学关键词优化哪个好
  • 有关中国文明网联盟网站建设活动方案宁德市旅游景点大全
  • 衡水做网站的公司搜索引擎营销的内容和层次有哪些
  • 如何注册小程序开店seo外包网站
  • 做网站有没有效果搜狗站长管理平台
  • 江阴企业网站建设哪家好百度竞价什么时候开始的
  • 那些市区做网站群阿里云域名注册流程
  • 做公众号首图网站seo在线论坛
  • 清远专业网站建设seo推广软件哪个好
  • 网站轮播图片怎么做郑州优化网站公司
  • 手机网站怎么写培训seo哪家学校好
  • 做g3云推广需要网站免费的网站域名查询app
  • 网站广告文案图片优化是什么意思
  • 网站开发备案费用免费网站建设制作
  • 做网站延期交付了搜索引擎名词解释
  • 临沂网站案例网页生成
  • 网站建设要点惠州企业网站建设
  • 软件开发一般多少钱英文seo外链发布工具
  • 网站设计一般多少钱网络营销公司名字
  • 定制手机网站真正免费的网站建站平台有哪些
  • 郑州做网站哪家便宜种子搜索引擎在线
  • 做网站做那一网站好外贸网站谷歌seo
  • 专门教做甜品的网站seo就业指导
  • 网站如何做网站名称软文范例800字
  • wordpress的登录地址修改密码天津seo网站推广
  • 临沂做网站企业今日西安头条最新消息
  • 上海的公司地址seo推广网络
  • 网站建设的电话如何网页优化
  • 安徽六安疫情源头网站优化推广服务
  • 网站外链建设平台手机百度2022年新版本下载