http://msdn.microsoft.com/en-US/

搜索

specification

搜索“PE COFF specification”,得到一篇Microsoft官方的PE格式文档:

http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v83.docx

这是我读过的讲解最清晰的关于PE格式的文档。

1. export、import与符号链接

关于dll的好处,这里不再详述,总之,dll机制带来了空间与时间上的效率提升。

dll是一种shared library机制,是一个封装“代码、数据和资源”的模块,现在几乎没有不依赖于dll的应用程序了。

当一个可执行文件(exe)被用来创建一个进程时,该exe文件会被Windows操作系统的组件“加载器”加载到进程的内存地址空间中;如果应用程序引用到了其他dll模块中的符号(函数或者变量),就需要将这些dll也加载到进程的地址空间中,由于ASLR等等客观原因影响,exe中引用外部符号的代码块无法提前预知dll中的某个符号被加载到内存地址空间的什么位置上,因此它需要一种提示机制来指导加载器在加载的过程中解析引用符号的真正地址。

这种机制可以被称为是“符号链接”,或者说是“加载时的符号链接”,它依赖于exe中的import table以及dll中的export table给出的提示信息。

import table提供以下信息:

[dll name] + [symbol ordinal that index into dll's export table entry]

[dll name] + [symbol name]

 

而export table则提供symbol name到symbol ordinal的映射关系,然后以symbol ordinal作为index到export table中找到符号的真正地址(dll被加载到内存地址空间后,符号的内存地址)

import table的布局:

Import Directory Table * 1

Import Lookup Table * N

Hint/Name Table * 1

Microsoft specification的更多相关文章

  1. MCE----Machine-check exception

    http://en.wikipedia.org/wiki/Machine_Check_Exception Machine-check exception From Wikipedia, the fre ...

  2. EF架构~引入规约(Specification)模式,让程序扩展性更强

    回到目录 规约(Specification)模式:第一次看到这东西是在microsoft NLayer项目中,它是微软对DDD的解说,就像petshop告诉了我们MVC如何使用一样,这个规约模式最重要 ...

  3. Microsoft source-code annotation language (SAL) 相关

    More info see: https://msdn.microsoft.com/en-us/library/hh916383.aspx Simply stated, SAL is an inexp ...

  4. 探索Microsoft.NET目录

    所在目录:D:\Windows\Microsoft.NET(d盘为系统盘) 文件目录 |--D:\Windows\Microsoft.NET |------assembly |------GAC_32 ...

  5. REST API设计指导——译自Microsoft REST API Guidelines(四)

    前言 前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本.那么什么是好的API设计?这里我们不得不提到REST API. 关于REST API的书籍很多,但是完整 ...

  6. REST API设计指导——译自Microsoft REST API Guidelines(二)

    由于文章内容较长,只能拆开发布.翻译的不对之处,请多多指教. 另外:最近团队在做一些技术何架构的研究,视频教程只能争取周末多录制一点,同时预计在下周我们会展开一次直播活动,内容围绕容器技术这块. 所有 ...

  7. C# Language Specification 5.0 (翻译)第一章 引言

    C#(念作 See Sharp)是一种简单.现代.面向对象并且类型安全的编程语言.C# 源于 C 语言家族,因此 C.C++ 和 Java 工程师们能迅速上手.ECMA 国际[1](ECMA Inte ...

  8. Microsoft OS Descriptors

    Microsoft OS Descriptors Updated: April 11, 2014 USB devices store standard descriptors in firmware ...

  9. Microsoft OWIN

    About OWIN defines a standard interface between .NET web servers and web applications. The goal of t ...

随机推荐

  1. camunda流程实例启动的一些简单操作

    public class ZccRuntimeService { RuntimeService runtimeService; RepositoryService repositoryService; ...

  2. jenkins中的pipeline学习

    Jenkins pipeline 升级打怪攻略(二): http://haurqb42j0gnc7zyxam.exp.bcevod.com/mda-jg9eq66184z5manh/mda-jg9eq ...

  3. Smokeping分享

    Somkeping master端搭建过程 服务端/master端 一. 搭好环境,安装依赖包(1)yum -y install httpd fping echoping curl  rrdtool ...

  4. poi解析word文档转换成html(包括图片解析)

    需求:将本地上传的word文档解析并放入数据库中 代码: import java.io.ByteArrayOutputStream;import java.io.File;import java.io ...

  5. elementUI 限制上传个数limit

    :limit='1' // 个数限制.

  6. Oracle备份统计信息

    Oracle可以通过DBMS_STATS.GET_TABLE_STATS 收集表的统计信息,一般的收集方法如下: DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => ...

  7. 【CSS】水平居中与垂直居中

    有宽度的div水平居中 1.左右margin设为auto即可 .center { width: 960px; margin-left: auto; margin-right: auto; } 2.绝对 ...

  8. MATLAB生成exe脱离matlab运行可执行程序

    https://blog.csdn.net/u013007900/article/details/53485204 侵权即删. ———————————————— 版权声明:本文为CSDN博主「小木匠_ ...

  9. pip配置阿里云源

    Windows:打开计算机,在地址栏输入%appdata%,回车,进入用户文件夹,新建文件夹,命名为pip 在pip下新建pip.ini,输入以下内容 [global] timeout=6000ind ...

  10. USACO18DEC Platinum

    standing out from the field 给你n个串,对于每个串求出只包含在这个串中的本质不同的子串? 后缀自动机,建树,对于每一个点打上包含在哪个串中的标记. 叶子都是前缀,直接在sa ...