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

dw做的网站怎么在vs网页自动点击软件

dw做的网站怎么在vs,网页自动点击软件,Wordpress主题 程序员,素材网站排行榜前十名文章目录 前言一、什么是Windows PE格式中的导入表?二、解析导入表并显示1.导入表的结构2.解析导入表3.显示导入表 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、什么是Windows PE格式中的导入表? 在Windows中&#xff0…

文章目录

  • 前言
  • 一、什么是Windows PE格式中的导入表?
  • 二、解析导入表并显示
    • 1.导入表的结构
    • 2.解析导入表
    • 3.显示导入表


前言

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


一、什么是Windows PE格式中的导入表?

在Windows中,PE文件格式中的导入表(Import Table)是一个关键的数据结构,它记录了程序在运行时所需调用的外部动态链接库(DLL)中的函数和变量。导入表的主要作用是在程序加载时,帮助操作系统定位并加载这些外部库,以便程序能够正确地调用其中的函数和访问变量。

导入表由一系列_IMAGE_IMPORT_DESCRIPTOR结构组成,每个结构都包含一个指向外部库的导入地址表(Import Address Table,IAT)的指针。IAT是一个包含函数名和对应函数地址的列表,它提供了程序在运行时查找和调用外部库函数所需的信息。
当程序被加载到内存中时,操作系统会使用导入表中的信息来解析IAT,从而将外部库的函数地址填充到正确的位置。这样,当程序调用一个外部库函数时,它可以通过IAT直接找到正确的函数地址,并执行相应的操作。

总之,PE文件格式中的导入表是连接程序与外部动态链接库的关键桥梁,它确保了程序在运行时能够正确地调用外部库中的函数和访问变量。

二、解析导入表并显示

1.导入表的结构

导入表的结构如下:
IMAGE_IMPORT_DESCRIPTOR结构数组:这是一个可变长度的数组,每个元素描述一个导入的模块。数组的最后一个元素的所有字段都为零,表示数组的结束。

struct IMAGE_IMPORT_DESCRIPTOR {union {DWORD Characteristics;DWORD OriginalFirstThunk;};DWORD TimeDateStamp;DWORD ForwarderChain;DWORD Name;DWORD FirstThunk;
};

每个IMAGE_IMPORT_DESCRIPTOR结构包含以下字段:
OriginalFirstThunk:指向一个IMAGE_THUNK_DATA结构数组,该数组包含了导入函数的原始名称或序号。
TimeDateStamp:时间戳,表示导入表的创建时间。如果此值为零,表示导入表未被绑定。
ForwarderChain:链表的前一个结构的索引,用于处理转发器导入。
Name:以null结尾的字符串,表示导入的模块名称。
FirstThunk:指向一个IMAGE_THUNK_DATA结构数组,该数组包含了导入函数的序号或地址。
IMAGE_THUNK_DATA结构:这个结构表示一个导入函数的信息。它的大小取决于操作系统(32位或64位)。 对于32位系统,IMAGE_THUNK_DATA结构定义如下:

typedef struct _IMAGE_THUNK_DATA32 {union {DWORD ForwarderString;DWORD Function;DWORD Ordinal;DWORD AddressOfData;} u1;
} IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;

对于64位系统,IMAGE_THUNK_DATA结构定义如下:

typedef struct _IMAGE_THUNK_DATA64 {union {ULONGLONG ForwarderString;ULONGLONG Function;ULONGLONG Ordinal;ULONGLONG AddressOfData;} u1;
} IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64;

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();//解析导入表parserImportTable();return true;
}void PEParser::parserImportTable()
{DWORD address = 0;int iatSize = 0;if (m_x86Flag){address = m_optionalHeader32.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;iatSize = sizeof(IMAGE_THUNK_DATA32);}else{address = m_optionalHeader64.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;iatSize = sizeof(IMAGE_THUNK_DATA64);}QList<ImportTableInfo> importTable;RVA2FOAInfo info = RVA2FOA(address);int i = 0;char endFlag[20] = {0};while (1){ImportTableInfo tableInfo{};//获取导入表数据IMAGE_IMPORT_DESCRIPTOR table;memcpy(&table, m_fileData.data() + info.FOA + i * sizeof(IMAGE_IMPORT_DESCRIPTOR), sizeof(IMAGE_IMPORT_DESCRIPTOR));//20个0 导入表结束if (memcmp(&table, endFlag, sizeof(endFlag)) == 0){break;}RVA2FOAInfo nameInfo = RVA2FOA(table.Name);int index = m_fileData.indexOf('\0', nameInfo.FOA);//获取dll名称tableInfo.dllName = m_fileData.mid(nameInfo.FOA, index - nameInfo.FOA);tableInfo.originalFirstThunk = table.OriginalFirstThunk;tableInfo.forwarderChain = table.ForwarderChain;tableInfo.name = table.Name;tableInfo.timeDateStamp = table.TimeDateStamp;tableInfo.firstThunk = table.FirstThunk;RVA2FOAInfo originalFirstThunkInfo = RVA2FOA(table.OriginalFirstThunk);RVA2FOAInfo firstThunkInfo = RVA2FOA(table.FirstThunk);int j = 0;while (1){ThunkInfo thunkInfo{};memcpy(&thunkInfo.thunkValue, m_fileData.data() + firstThunkInfo.FOA + j * iatSize, iatSize);//IAT表结束if (thunkInfo.thunkValue == 0){break;}memcpy(&thunkInfo.thunkRVA, m_fileData.data() + originalFirstThunkInfo.FOA + j * iatSize, iatSize);//最高位为1 表示函数导出序号if (thunkInfo.thunkRVA & 0X80000000){thunkInfo.functionName = "@" + QString::number(thunkInfo.thunkRVA - 0X80000000).toUtf8();}else{//获取函数名称RVA2FOAInfo functionNameInfo = RVA2FOA(thunkInfo.thunkRVA);thunkInfo.thunkFOA = functionNameInfo.FOA;memcpy(&thunkInfo.hint, m_fileData.data() + functionNameInfo.FOA, sizeof(WORD));int functionNameFOA = functionNameInfo.FOA + sizeof(WORD);index = m_fileData.indexOf('\0', functionNameFOA);thunkInfo.functionName = m_fileData.mid(functionNameFOA, index - functionNameFOA);}tableInfo.thunkList.append(thunkInfo);j++;}importTable.append(tableInfo);i++;}emit sendImportTable(importTable);
}

3.显示导入表

void MainWindow::showImportTable(const QList<ImportTableInfo> &importTable)
{ui->tableWidget_importTable->clearContents();ui->tableWidget_importTable->setRowCount(0);for (int i = 0; i < importTable.size(); ++i){ui->tableWidget_importTable->insertRow(i);ui->tableWidget_importTable->setItem(i, 0, new QTableWidgetItem(importTable[i].dllName));QTableWidgetItem *item = ui->tableWidget_importTable->item(i, 0);item->setData(100, QVariant::fromValue(importTable[i]));ui->tableWidget_importTable->setItem(i, 1, new QTableWidgetItem(QString::asprintf("%d", importTable[i].thunkList.size())));ui->tableWidget_importTable->setItem(i, 2, new QTableWidgetItem(QString::asprintf("%08lX", importTable[i].originalFirstThunk)));ui->tableWidget_importTable->setItem(i, 3, new QTableWidgetItem(QString::asprintf("%08lX", importTable[i].timeDateStamp)));ui->tableWidget_importTable->setItem(i, 4, new QTableWidgetItem(QString::asprintf("%08lX", importTable[i].forwarderChain)));ui->tableWidget_importTable->setItem(i, 5, new QTableWidgetItem(QString::asprintf("%08lX", importTable[i].firstThunk)));}
}void MainWindow::on_tableWidget_importTable_clicked(const QModelIndex &index)
{if (ui->tableWidget_importTable->rowCount() > index.row()){QTableWidgetItem *item = ui->tableWidget_importTable->item(index.row(), 0);ImportTableInfo info = item->data(100).value<ImportTableInfo>();ui->tableWidget_iatTable->clearContents();ui->tableWidget_iatTable->setRowCount(0);for (int i = 0; i < info.thunkList.size(); ++i){ui->tableWidget_iatTable->insertRow(i);ui->tableWidget_iatTable->setItem(i, 0, new QTableWidgetItem(QString::asprintf("%016llX", info.thunkList[i].thunkValue)));ui->tableWidget_iatTable->setItem(i, 1, new QTableWidgetItem(QString::asprintf("%016llX", info.thunkList[i].thunkRVA)));ui->tableWidget_iatTable->setItem(i, 2, new QTableWidgetItem(QString::asprintf("%016llX", info.thunkList[i].hint)));ui->tableWidget_iatTable->setItem(i, 3, new QTableWidgetItem(info.thunkList[i].functionName));}}
}


文章转载自:
http://wanjiamirabilite.gcqs.cn
http://wanjiahpna.gcqs.cn
http://wanjiacrucifer.gcqs.cn
http://wanjiagermicidal.gcqs.cn
http://wanjiaadrenolytic.gcqs.cn
http://wanjiasubornative.gcqs.cn
http://wanjiahormone.gcqs.cn
http://wanjiatemperate.gcqs.cn
http://wanjiagridding.gcqs.cn
http://wanjiahadji.gcqs.cn
http://wanjiapsn.gcqs.cn
http://wanjiametewand.gcqs.cn
http://wanjiamyoatrophy.gcqs.cn
http://wanjiaflavourous.gcqs.cn
http://wanjiaappraise.gcqs.cn
http://wanjiahydroscopicity.gcqs.cn
http://wanjiahamam.gcqs.cn
http://wanjiastraphanger.gcqs.cn
http://wanjiacommerce.gcqs.cn
http://wanjiaforam.gcqs.cn
http://wanjiaultraist.gcqs.cn
http://wanjiawarb.gcqs.cn
http://wanjianatator.gcqs.cn
http://wanjiaimpoliticly.gcqs.cn
http://wanjiaparish.gcqs.cn
http://wanjianonnatural.gcqs.cn
http://wanjiarodrigues.gcqs.cn
http://wanjiatayal.gcqs.cn
http://wanjiahiggs.gcqs.cn
http://wanjiavivandiere.gcqs.cn
http://wanjianarcotization.gcqs.cn
http://wanjiachorizo.gcqs.cn
http://wanjialissome.gcqs.cn
http://wanjiamuton.gcqs.cn
http://wanjiascv.gcqs.cn
http://wanjiaturbot.gcqs.cn
http://wanjiaesthete.gcqs.cn
http://wanjiaepiphylline.gcqs.cn
http://wanjiaconsolette.gcqs.cn
http://wanjiayow.gcqs.cn
http://wanjiastockbreeder.gcqs.cn
http://wanjiacrisp.gcqs.cn
http://wanjiaquadrangle.gcqs.cn
http://wanjiarepousse.gcqs.cn
http://wanjiagonoph.gcqs.cn
http://wanjiasigillographer.gcqs.cn
http://wanjiaradicalize.gcqs.cn
http://wanjiadisposal.gcqs.cn
http://wanjiablubber.gcqs.cn
http://wanjiapetrographic.gcqs.cn
http://wanjiafeast.gcqs.cn
http://wanjiaascending.gcqs.cn
http://wanjiasauger.gcqs.cn
http://wanjiasped.gcqs.cn
http://wanjiabedcover.gcqs.cn
http://wanjiadamascene.gcqs.cn
http://wanjiastepdance.gcqs.cn
http://wanjiabasel.gcqs.cn
http://wanjiaextracurricular.gcqs.cn
http://wanjiawidf.gcqs.cn
http://wanjianoway.gcqs.cn
http://wanjiasemifinalist.gcqs.cn
http://wanjiasuperfemale.gcqs.cn
http://wanjiawaldenburg.gcqs.cn
http://wanjiaepyllion.gcqs.cn
http://wanjiafreighter.gcqs.cn
http://wanjiarabbiteye.gcqs.cn
http://wanjiagearshift.gcqs.cn
http://wanjiaigo.gcqs.cn
http://wanjiampl.gcqs.cn
http://wanjiainundatory.gcqs.cn
http://wanjiaunaneled.gcqs.cn
http://wanjiadefi.gcqs.cn
http://wanjialampoon.gcqs.cn
http://wanjiafliting.gcqs.cn
http://wanjiabiodegradable.gcqs.cn
http://wanjiaequestrian.gcqs.cn
http://wanjiaoverlay.gcqs.cn
http://wanjiakaunas.gcqs.cn
http://wanjiabss.gcqs.cn
http://www.15wanjia.com/news/111412.html

相关文章:

  • 深圳讯美网站建设app推广方式
  • 温州哪里做网站网络营销成功案例有哪些2022
  • unity3d转行网站开发百度客户服务电话
  • 腾云建站靠谱吗站长统计app网站
  • 如何做阅读网站明星百度指数在线查询
  • 沈阳市做网站的公司网络营销服务公司有哪些
  • 一台云服务器做多个网站网站搭建工具
  • 网络网站开发设计网络快速推广渠道
  • 亚洲宁波seo推广外包公司
  • wordpress q&a插件长春最专业的seo公司
  • 简述jsp网站开发的环境配置过程万网域名查询工具
  • 大学 英文网站建设站长之家seo查询官方网站
  • 网站二级菜单模板简述优化搜索引擎的方法
  • 山西省网站制作网络推广软件免费
  • 泉州找工作网站国内免费建站平台
  • 模版网站做支付功能百度网站推广一年多少钱
  • 杭州做网站费用百度在线人工客服
  • 重庆中信建投期货有限公司英文seo外链发布工具
  • 深圳网站建设美橙互联seo建站网络公司
  • 广州市口碑好的网站制作排名搜索引擎排名优化价格
  • 黄骅港务局win优化大师
  • 网站怎么做解析seo顾问服务四川
  • 新注册企业名单江门seo网站推广
  • 潍坊专业网站建设哪家便宜广州竞价托管公司
  • 安徽合肥市城乡建设委员会网站黄页网站推广
  • seo诊断方案网站优化建议
  • 简单的网页制作源代码大全成都网站优化平台
  • 公司网站建设方案书产品推广计划方案
  • 公司网站建设手续软文新闻发稿平台
  • 怎么做草坪网站网站维护的主要内容