PE格式分析_1

PE历史简介:


portable excute 可移植的,可执行的文件(exe、dll)
Microsoft最开始做的Dos系统,开头是MZ标识,又叫MZ系统(这tm是个人名,碉堡了),是16位操作体统。
Microsoft后开开发了Windows NT系统,最大的特点是桌面,是32位操作系统。
那么文件格式需要重新设计,出现了PE,希望一统江湖,考虑了所有的操作系统厂家,但是Apple和Linux没有使用PE,而是用ELF(unix、Linux)格式。
因此PE的文件格式里面有很多字段是 windows 系统用不到的,有些是给已经被淘汰的dos系统用的,还有一些是给其他系统用的,所以不是每个字段都非常有用,只需要关注在 windows 上用的,即windows会检查的一些字段
畸形PE:做过手脚的PE,用于对抗


msdn:

file

代码解释结构

#include <stdio.h>
#include <Windows.h>

//#include <winnt.h>  // 定义了pe结构体的所有成员

int main()
{
    /******************************* Dos header ************************************/
    IMAGE_DOS_HEADER Header;  // Dos头

    /******************************* PE header ************************************/
    //IMAGE_FILE_HEADER peHeader;  // 新的文件格式从这里开始,并开始区分32和64位程序,但是文件头被NT头包含
    IMAGE_NT_HEADERS32 NTHeader;   // IMAGE_NT_HEADERS32  IMAGE_NT_HEADERS64   NT头(PE)

    // NT头包含:
    {
        IMAGE_FILE_HEADER FileHeader; // 文件头,保存文件信息
        IMAGE_OPTIONAL_HEADER32 OptionalHeader; // 选项头,存放程序信息

         // 选项头包含:
        {
            IMAGE_DATA_DIRECTORY DataDirectory[1]; // 数据目录,存放各种表,放1个表就增加1项
        }
    }

    /******************************* Section header ************************************/
    IMAGE_SECTION_HEADER SectionHeader[1]; //节表,存放段信息,描述映射信息,描述可执行文件在内存中怎么放
    // 节数据 ...                          // 节表和节数据 描述文件中的所有数据如何映射到内存

    /******************************* Debug information and certificates ************************************/
    // ....

    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇