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. 2019杭电多校第六场hdu6638 Snowy Smile(线段树+枚举)

    Snowy Smile 题目传送门 解题思路 先把y离散化,然后把点按照x的大小进行排序,我们枚举每一种x作为上边界,然后再枚举其对应的每一种下边界.按照这种顺序插入点,这是一个压维的操作,即在线段树 ...

  2. POJ 2254 Globetrotter (计算几何 - 球面最短距离)

    题目链接:POJ 2254 Description As a member of an ACM programming team you'll soon find yourself always tr ...

  3. dcoker镜像的分层

    镜像分层的好处:复用节省磁盘空间,相同的内容只需加载一份到内存 修改dockerfile之后,再次构建速度加快 docker优化: 1.尽可能地选择体积小的linux发行版,比如alpine 2.尽可 ...

  4. MySQL全面优化,速度飞起来!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:惨绿少年 https://www.cnblogs.com/clsn/p/8214048.html 在进行MySQL的优 ...

  5. Javascript生成器函数

    function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个Generator 对象 示例: function* g ...

  6. POJ 1052 MPI Maelstrom

    MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5547   Accepted: 3458 Des ...

  7. html 中手写阴影弹窗框封装

    // 弹出提示框 function popup(pWidth,content) { $("#msg").remove(); var html ='<div id=" ...

  8. teb教程8

    融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...

  9. 64位 __int 与 long long写法

    在做ACM题时,经常都会遇到一些比较大的整数.而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647.而unsig ...

  10. mysql莫名报"unknown column ... in 'on clause'"

    今天遇见个会诡异的问题 一个web程序本地调试的好好的,结果发布到服务器上程序就报错了,报"unknown column ... in 'on clause'",网上搜了下,说是m ...