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

色流网站怎么做卖友情链接的哪来那么多网站

色流网站怎么做,卖友情链接的哪来那么多网站,烟台网站排名优化公司哪家好,外发加工网 在家文章目录 前言一、什么是Windows PE格式节表?二、解析节表并显示1.节表数据结构以及字段描述2.节表的属性3.解析4.显示 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、什么是Windows PE格式节表? PE格式的节表&#xff08…

文章目录

  • 前言
  • 一、什么是Windows PE格式节表?
  • 二、解析节表并显示
    • 1.节表数据结构以及字段描述
    • 2.节表的属性
    • 3.解析
    • 4.显示


前言

通过分析和解析Windows PE格式,并使用qt进行图形化显示


一、什么是Windows PE格式节表?

PE格式的节表(Section Table)是一个数组,它包含了PE文件中各个节(Section)的信息。每个节表项都是一个IMAGE_SECTION_HEADER结构体,它包含了关于节的名称、大小、属性等信息。

二、解析节表并显示

1.节表数据结构以及字段描述

Name:节的名称,最多8个字符,以空字符填充。
VirtualSize:节在内存中的大小,以字节为单位。
VirtualAddress:节在内存中的起始RVA(相对虚拟地址)。
SizeOfRawData:节在文件中的大小,以字节为单位。
PointerToRawData:节在文件中的起始偏移量,以字节为单位。
PointerToRelocations:节的重定位表在文件中的起始偏移量,以字节为单位。
PointerToLinenumbers:节的行号表在文件中的起始偏移量,以字节为单位。
NumberOfRelocations:节的重定位表中的项数。
NumberOfLinenumbers:节的行号表中的项数。
Characteristics:节的属性,如可读、可写、可执行等。

struct IMAGE_SECTION_HEADER
{BYTE Name[IMAGE_SIZEOF_SHORT_NAME];union {DWORD PhysicalAddress;DWORD VirtualSize;} Misc;DWORD VirtualAddress;DWORD SizeOfRawData;DWORD PointerToRawData;DWORD PointerToRelocations;DWORD PointerToLinenumbers;WORD NumberOfRelocations;WORD NumberOfLinenumbers;DWORD Characteristics;
};

2.节表的属性

PE格式的节表中的每个节都有一个属性字段(Characteristics),它是一个位掩码,用于指定节的各种属性。以下是一些常见的节属性及其具体值:
IMAGE_SCN_CNT_CODE:表示节包含可执行代码。具体值为0x00000020。
IMAGE_SCN_CNT_INITIALIZED_DATA:表示节包含初始化的数据。具体值为0x00000040。
IMAGE_SCN_CNT_UNINITIALIZED_DATA:表示节包含未初始化的数据。具体值为0x00000080。
IMAGE_SCN_MEM_EXECUTE:表示节可以执行。具体值为0x20000000。
IMAGE_SCN_MEM_READ:表示节可以读取。具体值为0x40000000。
IMAGE_SCN_MEM_WRITE:表示节可以写入。具体值为0x80000000。
IMAGE_SCN_MEM_SHARED:表示节可以在多个进程之间共享。具体值为0x10000000。
IMAGE_SCN_MEM_DISCARDABLE:表示节可以被丢弃,以释放内存。具体值为0x02000000。
IMAGE_SCN_MEM_NOT_CACHED:表示节不应被缓存。具体值为0x04000000。
IMAGE_SCN_MEM_NOT_PAGED:表示节不应被分页。具体值为0x08000000。
这些属性可以组合使用,以指定节的具体属性。例如,如果一个节同时包含可执行代码和可读数据,那么它的属性字段将包含IMAGE_SCN_CNT_CODE和IMAGE_SCN_MEM_READ标志。在处理PE文件时,可以通过检查节的属性字段来确定节的具体用途和行为。

3.解析

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)));return true;
}void PEParser::parserSectionHeader(const QByteArray &sectionHeader)
{m_sections.clear();for (int i = 0; i < m_fileHeader.NumberOfSections; ++i){int index = i * sizeof(IMAGE_SECTION_HEADER);QByteArray sectionData = sectionHeader.mid(index, sizeof(IMAGE_SECTION_HEADER));const IMAGE_SECTION_HEADER *header = reinterpret_cast<const IMAGE_SECTION_HEADER *>(sectionData.data());m_sections.append(*header);}emit sendSectionHeader(m_sections);
}

4.显示

void MainWindow::showSectionHeader(const QList<IMAGE_SECTION_HEADER> &sections)
{ui->tableWidget_sections->clearContents();ui->tableWidget_dataDirectories->setRowCount(0);for (int i = 0; i < sections.size(); ++i){ui->tableWidget_sections->insertRow(i);ui->tableWidget_sections->setItem(i, 0, new QTableWidgetItem(QString::asprintf("%s", sections[i].Name)));ui->tableWidget_sections->setItem(i, 1, new QTableWidgetItem(QString::asprintf("%08lX", sections[i].VirtualAddress)));ui->tableWidget_sections->setItem(i, 2, new QTableWidgetItem(QString::asprintf("%08lX", sections[i].Misc.VirtualSize)));ui->tableWidget_sections->setItem(i, 3, new QTableWidgetItem(QString::asprintf("%08lX", sections[i].PointerToRawData)));ui->tableWidget_sections->setItem(i, 4, new QTableWidgetItem(QString::asprintf("%08lX", sections[i].SizeOfRawData)));ui->tableWidget_sections->setItem(i, 5, new QTableWidgetItem(QString::asprintf("%08lX", sections[i].Characteristics)));}
}

http://www.khdw.cn/news/36300.html

相关文章:

  • 简单的个人网页制作八上数学优化设计答案
  • 太原网站模板嘉兴优化公司
  • 厦门站长优化工具微信推广链接怎么制作
  • 网站后台账户密码软文写作平台发稿
  • 做网站cnfgseo快速排名软件价格
  • 日照网站建设哪家好seo论坛站长交流
  • node mysql做动态网站今天的新闻发布会
  • 九江网站建设公司软件推广的渠道是哪里找的
  • 上海备案证查询网站查询系统想要网站推广页
  • wordpress仿制建设搜索引擎优化包括
  • 重庆旅游网页设计网站seo关键词优化
  • 沈阳网站制作哪家好百度关键词搜索排名多少钱
  • 网站开发第三方支付宁波seo高级方法
  • 有没有做php项目实战的网站自媒体培训
  • wordpress 绑定多个二级域名自动app优化官网
  • 网站建设策划 流程网站设计公司排行
  • 十大接单网站脚本外链平台
  • 网站模版idc台州网站建设方案推广
  • 电子商务网站建设前的分析技能培训
  • 做暧暧视频网站爱站网权重查询
  • 济南网站建设平台seo专员是什么职位
  • 做外贸哪个网站比较好2017今日国内新闻
  • 适合毕设做的简单网站seo价格是多少
  • 武汉教育网站建设优化商务软文写作范文200字
  • 怎么做服务器网站网络营销推广方案3篇
  • dw免费网站模板职业技能培训有哪些
  • 蓝科企业网站系统免费b站在线观看人数在哪里找到
  • 佛山中小企业外贸网站建设推广知名的seo快速排名多少钱
  • 郑州网站建设外包业务全网营销策划公司
  • 企业管理咨询公司注册条件网站seo设置是什么