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

做网站需要注意的风险绥中做网站

做网站需要注意的风险,绥中做网站,十大嵌入式培训机构,代点任意广告链接网站导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。当PE文件执行时Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入&…

导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。当PE文件执行时Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入,再根据DLL文件中函数的导出信息对可执行文件的导入表(IAT)进行修正。

导出表中包含了三种信息:

  • 函数名称:记录了可执行文件中导出函数的名称,在其他程序中调用时需要用到这个名称。
  • 函数地址:记录了可执行文件中导出函数的地址,使用时需要调用该函数的地址。
  • 函数序号:记录了每个导出函数的序号,可以通过序号直接调用函数。

导出函数的DLL文件中,导出信息被保存在导出表,导出表就是记载着动态链接库的一些导出信息。通过导出表,DLL文件可以向系统提供导出函数的名称、序号和入口地址等信息,以便Windows装载器能够通过这些信息来完成动态链接的整个过程。

导出函数存储在PE文件的导出表里,导出表的位置存放在PE文件头中的数据目录表中,与导出表对应的项目是数据目录中的首个IMAGE_DATA_DIRECTORY结构,从这个结构的VirtualAddress字段得到的就是导出表的RVA值,导出表同样可以使用函数名或序号这两种方法导出函数。

导出表的起始位置有一个IMAGE_EXPORT_DIRECTORY结构与导入表中有多个IMAGE_IMPORT_DESCRIPTOR结构不同,导出表只有一个IMAGE_EXPORT_DIRECTORY结构,该结构定义如下:

typedef struct _IMAGE_EXPORT_DIRECTORY
{DWORD   Characteristics;       // 保留,恒为0x00000000DWORD   TimeDateStamp;         // 文件的产生时间戳WORD    MajorVersion;          // 主版本号WORD    MinorVersion;          // 次版本号DWORD   Name;                  // 指向文件名的RVADWORD   Base;                  // 导出函数的起始序号DWORD   NumberOfFunctions;     // 导出函数总数DWORD   NumberOfNames;         // 以名称导出函数的总数DWORD   AddressOfFunctions;    // 导出函数地址表的RVADWORD   AddressOfNames;        // 函数名称地址表的RVADWORD   AddressOfNameOrdinals; // 函数名序号表的RVA
} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;

上面的_IMAGE_EXPORT_DIRECTORY 结构如果总结成一张图,如下所示:

在上图中最左侧AddressOfNames结构成员指向了一个数组,数组里保存着一组RVA,每个RVA指向一个字符串即导出的函数名,与这个函数名对应的是AddressOfNameOrdinals中的结构成员,该对应项存储的正是函数的唯一编号并与AddressOfFunctions结构成员相关联,形成了一个导出链式结构体。

获取导出函数地址时,先在AddressOfNames中找到对应的名字MyFunc1,该函数在AddressOfNames中是第1项,然后从AddressOfNameOrdinals中取出第1项的值这里是1,然后就可以通过导出函数的序号AddressOfFunctions[1]取出函数的入口RVA,然后通过RVA加上模块基址便是第一个导出函数的地址,向后每次相加导出函数偏移即可依次遍历出所有的导出函数地址,代码如下所示:

int main(int argc, char * argv[])
{BOOL PE = IsPeFile(OpenPeFile("c://pe/lyshark.dll"), 0);if (PE == TRUE){// 0. 获取到ImageBase镜像基地址DWORD ImageBase = NtHeader->OptionalHeader.ImageBase;// 1. 从数据目录表的下标为 0 的项找到rvaDWORD rav = NtHeader->OptionalHeader.DataDirectory[0].VirtualAddress;// 2. 找到导入表结构体auto ExportTable = (PIMAGE_EXPORT_DIRECTORY)(RVAtoFOA(rav) + GlobalFileBase);// 3. 获取有名字的个数和函数总个数DWORD NameCount = ExportTable->NumberOfNames;DWORD FunctionCount = ExportTable->NumberOfFunctions;// 4. 获取三张表,分别是 地址表,名称表,序号表,其中序号表是WORDDWORD* Addr_Table = (DWORD*)(RVAtoFOA(ExportTable->AddressOfFunctions) + GlobalFileBase);DWORD* Name_Table = (DWORD*)(RVAtoFOA(ExportTable->AddressOfNames) + GlobalFileBase);WORD* Id_Table = (WORD*)(RVAtoFOA(ExportTable->AddressOfNameOrdinals) + GlobalFileBase);printf("序号 \t 导出RVA地址 \t 导出VA地址 \t 导出FOA地址 \t 导出函数 \t \n");// 5. 遍历地址表for (DWORD i = 0; i < FunctionCount; ++i){bool HaveName = FALSE;// 6. 判断是否有名字,有名字的话,下标会存在序号表中for (DWORD j = 0; j < NameCount; ++j){// 如果有名字则执行此处if (i == Id_Table[j]){HaveName = TRUE;// 对应序号表下标的名称表内保存的是名字CHAR* Name = (CHAR*)(RVAtoFOA(Name_Table[j]) + GlobalFileBase);printf("%5d \t %10p \t 0x%08X \t 0x%08X \t %-35s \n",i + ExportTable->Base, Addr_Table[i], ImageBase + Addr_Table[i], RVAtoFOA(Addr_Table[i]), Name);break;}}// 如果全部找完还没有名字if (HaveName == FALSE){printf("%5d \t %10p \t 0x%08X \t 0x%08X \t None \n",i + ExportTable->Base, Addr_Table[i], ImageBase + Addr_Table[i], RVAtoFOA(Addr_Table[i]));}}}else{printf("非标准程序 \n");}system("pause");return 0;
}

运行如上程序片段,则会输出lyshark.dll动态链接库里面所有的导出函数,其输出效果如下图所示;

本文作者: 王瑞
本文链接: https://www.lyshark.com/post/407f7b06.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

http://www.bjxfkj.com.cn/article/110008.html

相关文章:

  • 平面设计做兼职网站centos打开wordpress
  • 文案网站策划书成都必去十大网红景点
  • 如何统计网站访问量小说网站建设源码
  • 汕头哪里建网站营业执照怎么注销
  • 做ppt在哪些网站可以卖钱wordpress gallery类型
  • 上海做网站好的公司有哪些企业宽带可以做网站吗
  • 龙岩做网站的地方有哪些天津企业设计网站建设
  • 微网站 电脑网站 统一网站开发哪家
  • 网站开发与实践题库东台哪家专业做网站
  • 网站开发工具哪个好电子商务是干什么的就业前景
  • 织梦后台搭建网站并调用标签建设网站设计用ps 怎么做
  • 我找伟宏篷布我做的事ko家的网站连云港网页设计
  • 门户网站建设方案ppt门户网站简介
  • 北京网站开发报价wordpress 历史上今天
  • phpcms做网站建栏目长页网站
  • 图书馆建设投稿网站广告设计与制作需要学什么
  • 网站框架是什么网站推广基本方法是
  • 关于建设网站的需求品玩 wordpress主题
  • 长春建站优化余杭网站建设
  • 如何加强网站内容建设百度一下搜索一下
  • 行业网站建设运营代注册各类app
  • 做网站要审核吗北京度seo排名
  • 工作一般做网站视频的工作叫做什么哪里有免费的网站推广软件
  • 怎么做好手机网站开发做算命网站犯法吗
  • 太原网站建设方案策划上海亿网站建设
  • 中国商城网站建设wordpress网站统计代码
  • 东莞万江做网站WordPress目录筛选
  • 建设网站的和服务器自助建站公司
  • 衡水做网站技术网站建设开户行查询
  • 移动端网站和app区别做网站网站盈利会怎么样