|
|
第 1 帖 | |
|
|
标题: [操作系统][文件格式]问个问题:exe文件包含什么内容? 好久以来,在sir上都 是顶别人的贴,近来对win下的 exe 很好奇,不知道它到底包含什么东西?
希望有牛人帮忙详细解答一下
__________________
Hack the free software. Into the freedom world. Fight for the free. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
可以参考
http://madchat.org/vxdevl/papers/win...ile/pefile.htm http://www.skynet.ie/~caolan/publink...oc/pefile.html 说的很详细。 各个系统之间,文件格式可能不相同。第一个贝尔实验室诞生的Unix系统使用a.out格式; 早期的System V Unix使用“通用目标文件格式”(Common Object File Format, COFF); WindowsNT用COFF的一个变体“可移植可执行(Portable Executable)格式”; 现代的Unix系统(System V之后的Unix、BSD、Solaris等)以及Linux,都采用“Unix可执行可链接(Executable and Linkable Format, ELF)格式”。格式虽不同,但基本原理却相通。
__________________
Athlon Phenom II X4 940 OC 3.6G / Kingston DDR2 4G / DFI 790X-M2RS / Sapphire HD4870 /Audigy2 ZS / 22' LCD / Acbel iPower660 此帖于 06-08-13 17:00 被 soloforce 编辑. |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
我不明白的地方如下:
用delphi编译而成的exe文件,必然用到vcl类库,而把这个exe文件拿到没有delphi,也没vcl库的电脑,却也能执行。 所以我的问题才会是:exe文件到底包含什么? 是不是exe文件会把library等编译会用到的东西全部包含进来? 如果是这样的话,我写的程序有20多mb,为何compiler后只有几mb,甚至几百kb而已? 所以请别误解我的意思,lolita大哥,我并非想研究到exe文件那些很莫名其妙的机器吗的东西。 |
|
|
|
|
|
|
|
第 4 帖 | |||
|
|
引用:
一般来说,链接过程发生在编译完成后,链接器通过符号解析和代码重定位等一系列措施确定你的程序需要的目标代码(包括你自己写的,还有库里面的),然后根据用户的要求进行链接,比如静态方式。静态链接会把库中用到的代码全部拷贝到最终的可执行目标文件里头,但不是库中的所有内容,而是要什么代码就拷贝什么代码,“按需分配”。如果你写的程序调用了很多库,使用了很多库函数,最后静态链接出来的目标代码就会比较庞大; 但拿到任何同类架构、同类OS的机器上就可以跑。 引用:
|
|||
|
|
|
|||
|
|
第 5 帖 | |
|
|
我一直困惑的问题是,如果WIN还有LINUX 都在一个平台下,比如说我们的PC (intel)的硬件平台,他们在这个平台下的最终执行的代码都一样,也就是说机器码一样。那如果把WIN下的机器码文件(可以被处理器执行的机器码)拿到LINUX下,能不能一样的执行呢?
因为机器码是一样的 是不是可以执行呢? |
|
|
|
|
|
|
|
第 6 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 7 帖 | |
|
|
LZ最好去 www.pediy.com 看看PE格式的资料
__________________
play~ 爱己、爱人、爱世界 |
|
|
|
|
|
|
|
第 8 帖 | ||
|
|
引用:
如果你把它放在一个没有操作系统的机器上肯定也不能运行。 如果你做过嵌入式系统开发就会明白,在没有操作系统的情况下, 所有的一切你都要考虑,也都由你决定,如果用C开发就需要为它准备运行环境, 如堆栈之类的,还要考虑链接定位的问题,如代码和数据放在内存的哪个位置。 最近在学这个,所以就拿它举个例子。
__________________
Were you wondering was the gamble worth the price? |
||
|
|
|
||
|
|
第 9 帖 | |
|
|
我说啊,如果你能在LINUX上做一个0X2E,再给内核做一个PE插件,……
|
|
|
|
|
|
|
|
第 10 帖 | |
|
|
这个简单的问题, 没必要复杂的回复。
我的回答比较简单, 不涉及专业知识。 无论是 windows 还是 linux 。他们的可执行程序都是 相对于 操作系统而言的。跟计算机体系也有关系。 linux 下没有.exe 这个特别的, 任何文件都可以有 执行位,但只有合适格式的才被正确执行 可执行文件的格式有很多。 比如 .bat .cmd .com .exe 编译, 有时候目标大,有时候目标小。 其实目标代码是都不会少的。 只是有时生成的代码包含在目标里。而有时候代码未被包含而已。 |
|
|
|
|
|