青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

PE 文件格式 (1)

Posted on 2009-09-12 04:55 S.l.e!ep.¢% 閱讀(2204) 評論(1)  編輯 收藏 引用 所屬分類: PE
?
PE 文件格式
?
PE. Portable Executable, 可移植的可執(zhí)行文件, 是 MS WinNT, Win95, Win32中可執(zhí)行的二進(jìn)制文件
???a.在 Win 中,驅(qū)動(dòng)也是這種格式
?? b.這種文件格式由MS設(shè)計(jì)
?
1. DOS 頭是這樣的一個(gè)結(jié)構(gòu)(也叫 'MZ' 頭), 總共是 64 bytes
??? typedef struct _IMAGE_DOS_HEADER
?? {??????
??????? WORD?? e_magic;??????? // 必需為 4D 5A???? 'MZ'?? IMAGE_DOS_SIGNATURE
??????? WORD?? e_cblp;????????? // 文件最后頁的字節(jié)數(shù)???????????
??????? WORD?? e_cp;??????????? // 文件頁數(shù)
??????? WORD?? e_crlc;????????? // 重定義元素個(gè)數(shù)
??????? WORD?? e_cparhdr;???? // 頭部盡寸, 以段落為單位??????????????
??????? WORD?? e_minalloc;???? // 所需的最小附加段
??????? WORD?? e_maxalloc;??? // 所需的最大附加段
??????? WORD?? e_ss;??????????? // 初始的SS值 (相對偏移量)
??????? WORD?? e_sp;??????????? // 實(shí)始的SP值?
????????WORD?? e_csum;??????? // 校驗(yàn)和
????????WORD?? e_ip;???????????? // 初始的IP值
????????WORD?? e_cs;??????????? // 初始的CS值(相對偏移量)
????????WORD?? e_lfarlc;???????? // 重分配表文件地址
????????WORD?? e_ovno;???????? // 覆蓋號
????????WORD?? e_res[4];?????? // 保留字?
??????? WORD?? e_oemid;?????? // OEM標(biāo)識符 (相對 e_oeminfo)??????????????
??????? WORD?? e_oeminfo;???? // OEM 信息????????????????
??????? WORD?? e_res2[10];??? // 保留字
??????? LONG?? e_lfanew;?????? //? PE頭文件偏移量 , IMAGE_NT_HEADER32 結(jié)構(gòu)所在的文件地址?????????
?? }IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
???
?? (1). “MZ”是MS-DOS開發(fā)者之一的馬克·茨柏克沃斯基(Mark Zbikowski)的姓名首字母縮寫。
?? (2).? e_lfanew定位到PE文件頭
?
???P:? 1. 如何修改 DOS Stub
??????? A:?? If you're compiling and linking the program yourself using MS compilers then the simplest approach would be to put in a custom DOS stub using the linkers /STUB[^] switch. Put in one which simply does nothing and returns immediately.?
???????
/STUB:filename
?Remarks

where:

filename

An MS-DOS application.

The /STUB option attaches an MS-DOS stub program to a Win32 program.

A stub program is invoked if the file is executed in MS-DOS. It usually displays an appropriate message; however, any valid MS-DOS application can be a stub program.

Specify a filename for the stub program after a colon (:) on the command line. The linker checks filename and issues an error message if the file is not an executable. The program must be an .exe file; a .com file is invalid for a stub program.

If this option is not used, the linker attaches a default stub program that issues the following message:

When building a virtual device driver, filename allows the user to specify a file name that contains an IMAGE_DOS_HEADER structure (defined in WINNT.H) to be used in the VXD, rather than the default header.

To set this linker option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.

  2. Click the Linker folder.

  3. Click the Command Line property page.

  4. Type the option into the Additional Options box.

To set this linker option programmatically


?
??????? 2. DOS 下的程序 與 (Win32下的程序?/ VC6編譯的DOS程序), MZ頭的不同?
?
???---------------------------------------------------------------------------------

?? Offset?????? 00 01 02 03 04 05 06 07? 08 09 0A 0B 0C 0D 0E 0F

?? 00000000? 4D 5A 90 00 03 00 00 00?? 04 00 00 00 FF FF 00 00?? MZ?..........
?? 00000010? B8 00 00 00 00 00 00 00?? 40 00 00 00 00 00 00 00?? ?......@.......
?? 00000020? 00 00 00 00 00 00 00 00?? 00 00 00 00 00 00 00 00?? ................
?? 00000030? 00 00 00 00 00 00 00 00?? 00 00 00 00 F0 00 00 00?? ............?..

???---------------------------------------------------------------------------------??
??
?? 第一行:
?? (1). 4D 5A 對應(yīng) IMAGE_DOS_HEADER.e_magic 字段, 分別為 'MZ' 的 ASCII 碼
?? (2). 90 00 對應(yīng) IMAGE_DOS_HEADER.e_cblp 字段,值為 0x0090,
?? (3). 03 00 對應(yīng) IMAGE_DOS_HEADER.e_cp 字段,值為 0x0003,
?? (4). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_crlc 字段,值為 0x0000
??
?? (5). 04 00 對應(yīng) IMAGE_DOS_HEADER.e_cparhdr?? 0x0004;???? // 頭部盡寸, 以段落為單位??????????????
???(6). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_minalloc?? 0x0000;???? // 所需的最小附加段
???(7). FF FF 對應(yīng) IMAGE_DOS_HEADER.e_maxalloc? 0xFFFF;??? // 所需的最大附加段
???(8). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_ss;???????? 0x0000???? // 初始的SS值 (相對偏移量)
???
?? 第二行:
???(9) . B8 00 對應(yīng) IMAGE_DOS_HEADER.e_sp;??? 0x00B8???????? // 實(shí)始的SP值?
???(10).00 00 對應(yīng) IMAGE_DOS_HEADER.e_csum; 0x0000?????? // 校驗(yàn)和
???(11).00 00 對應(yīng) IMAGE_DOS_HEADER.e_ip;?? 0x00????????? // 初始的IP值
???(12).00 00?對應(yīng)?IMAGE_DOS_HEADER.e_cs;? 0x00????????? // 初始的CS值(相對偏移量)
???
????(13). 40 00 對應(yīng) IMAGE_DOS_HEADER.e_lfarlc;? 0x0040??????? // 重分配表文件地址
????(14). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_ovno;? 0x0000?????? // 覆蓋號
????(15). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_res[4]; 0x0000????? // 保留字
??????????? 00 00
??????????? 00 00
?
??? 第三行:
????(16). 00 00
??? (17). 00 00 對應(yīng) IMAGE_DOS_HEADER.e_oemid;?????? // OEM標(biāo)識符 (相對 e_oeminfo)??
??? (18). 00 00 對應(yīng) IMAGE_DOS_HEADER.WORD?? e_oeminfo;???? // OEM 信息
????(16).?00 00 對應(yīng) IMAGE_DOS_HEADER.WORD?? e_res2[10];??? // 保留字?
???????????
????(17).?00 00
????(18).?00 00?
????(19).?00 00
????(20).?00 00

?

??? 第四行:
????(21).?00 00
????(22).?00 00?
????(23).?00 00
????(24).?00 00

?

????(25).?00 00
????(26).?00 00?
????(27).?F0 00 對應(yīng) IMAGE_DOS_HEADER.LONG?? e_lfanew;? 這里的地址為 0x000000F0 //? PE頭文件偏移量 , IMAGE_NT_HEADER32 結(jié)構(gòu)所在的文件地址
????(28).?00 00

2. DOS Stub (DOS實(shí)模式殘余程序)
?? (1). 實(shí)模式殘余程序 是一個(gè)在裝載時(shí)能夠被 MS-DOS運(yùn)行的實(shí)際程序。
?? (2). Dos Stub 只是提供了 PE 文件在DOS下面執(zhí)行時(shí),DOS會(huì)把它當(dāng)作有效的執(zhí)行文件而順利執(zhí)行。
???????? 通常 Win32 的程序會(huì)在屏幕上輸入"This Program cannot run in DOS mode"之類的提示語
?? (3). 可以隨便改變 DOS Stub, 根據(jù)自己的意圖實(shí)現(xiàn)完整的 DOS 代碼
???(4). DOS 下的EXE文件,長度不定
?? (5). 在 Win32下, MZ頭 跟 DOS 加載模塊 用不上, 加上這兩個(gè)只為兼容性問題

P:
1.? 只取 MZ 頭與 DOS Stub

Offset????? 0? 1? 2? 3? 4? 5? 6? 7?? 8? 9? A? B? C? D? E? F

00000000?? 4D 5A 90 00 03 00 00 00? 04 00 00 00 FF FF 00 00?? MZ?..........
00000010?? B8 00 00 00 00 00 00 00? 40 00 00 00 00 00 00 00?? ?......@.......
00000020?? 00 00 00 00 00 00 00 00? 00 00 00 00 00 00 00 00?? ................
00000030?? 00 00 00 00 00 00 00 00? 00 00 00 00?00 0F 00 00?? ............?..
00000040?? 0E 1F BA 0E 00 B4 09 CD? 21 B8 01 4C CD 21 54 68?? ..?.???L?Th
00000050?? 69 73 20 70 72 6F 67 72? 61 6D 20 63 61 6E 6E 6F?? is program canno
00000060?? 74 20 62 65 20 72 75 6E? 20 69 6E 20 44 4F 53 20?? t be run in DOS
00000070?? 6D 6F 64 65 2E 0D 0D 0A? 24 00 00 00 00 00 00 00?? mode....$.......
00000080?? 8D 44 CE 8E C9 25 A0 DD? C9 25 A0 DD C9 25 A0 DD?? 岲螏?犦?犦?犦
00000090?? AB 3A B3 DD CD 25 A0 DD? 4A 39 AE DD C8 25 A0 DD?? ?齒?犦J9?犦
000000A0?? A6 3A AA DD C2 25 A0 DD? A6 3A A4 DD CB 25 A0 DD?? ??犦?ぽ?犦
000000B0?? FF 03 A4 DD CA 25 A0 DD? C9 25 A1 DD BA 25 A0 DD?? .ぽ?犦?≥?犦
000000C0?? FF 03 AB DD CF 25 A0 DD? 0E 23 A6 DD C8 25 A0 DD?? .?犦.#?犦
000000D0?? 52 69 63 68 C9 25 A0 DD? 00 00 00 00 00 00 00 00?? Rich?犦........
000000E0?? 00 00 00 00 00 00 00 00? 00 00 00 00 00 00 00 00?? ................

結(jié)果,
運(yùn)行程序并沒有顯示 '?This program cannot be run in DOS?mode?' ..........??
在純DOS下會(huì)顯示 'Errror in exe file'
難道跟 MZ 頭除了e_lfanew的字段有關(guān)?........

將開頭的? 4D 5A 90 00 03 00 改為
????????????????? 4D 5A 00 01 01 00
之后,在純DOS下就會(huì)顯示??'?This program cannot be run in DOS?mode?'
在 Win 下會(huì)一閃而過, 需要先 run cmd, 再run debug, -q 退出, 再執(zhí)行,就會(huì)顯示 '?This program cannot be run in DOS?mode?'
原因暫時(shí)未知.

Feedback

# re: PE 文件格式 (1)  回復(fù)  更多評論   

2009-09-13 11:41 by 99書城
按時(shí)間愛的世界
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美人成在线| 亚洲欧洲日产国产综合网| 免费人成精品欧美精品| 亚洲高清一区二| 香蕉成人久久| 黄色欧美日韩| 欧美日韩视频在线一区二区| 欧美一区二粉嫩精品国产一线天| 欧美大片在线观看一区二区| 亚洲天堂成人| 一区二区在线观看av| 欧美视频三区在线播放| 久久先锋资源| 亚洲一区二区欧美日韩| 欧美成ee人免费视频| 欧美一区二区三区免费视| 亚洲精品小视频在线观看| 国产美女一区二区| 欧美二区乱c少妇| 一本色道久久精品| 嫩草国产精品入口| 亚洲国产国产亚洲一二三| 亚洲精品一区中文| 久久久久久国产精品mv| 亚洲亚洲精品三区日韩精品在线视频 | 欧美日韩国产专区| 久久久久久高潮国产精品视| 亚洲与欧洲av电影| 久久国产精品一区二区| 亚洲午夜精品久久久久久app| 亚洲国产一二三| 欧美国产日韩亚洲一区| 免费成人av在线看| 久久成人人人人精品欧| 亚洲在线黄色| 亚洲午夜影视影院在线观看| 欧美综合国产精品久久丁香| 欧美激情第10页| 亚洲无毛电影| 麻豆乱码国产一区二区三区| 久久久精品日韩欧美| 久久精品99无色码中文字幕| 欧美极品aⅴ影院| 欧美日韩第一页| 国产婷婷色一区二区三区| 国产精品久久久久久久久久久久| 欧美日韩国产一区二区| 国产午夜久久久久| 99国内精品久久| 亚洲免费福利视频| 一区二区高清在线| 中文亚洲免费| 六月婷婷一区| 欧美成人免费在线| 亚洲一区二区三区成人在线视频精品 | 久久久九九九九| 欧美日韩午夜激情| 亚洲综合精品| 亚洲视频综合在线| 久久亚洲私人国产精品va| 欧美性大战久久久久久久| 国产精品福利久久久| 亚洲国产婷婷| 亚洲精品在线一区二区| 久久精品国产一区二区三| 久久综合国产精品台湾中文娱乐网| 久久综合影音| 亚洲一区二区三区涩| 欧美激情一区二区三区四区| 狠狠色狠狠色综合日日tαg| 午夜久久久久久| 狼狼综合久久久久综合网 | 99re6热只有精品免费观看| 久久久999精品| 在线亚洲一区| 久久精品国产精品亚洲综合 | 亚洲另类春色国产| 久久亚洲高清| 国产在线拍偷自揄拍精品| 91久久精品久久国产性色也91| 99在线精品视频在线观看| 亚洲欧美在线视频观看| 99在线观看免费视频精品观看| 亚洲免费在线电影| 欧美视频在线免费| 99精品欧美一区二区蜜桃免费| 欧美1区2区| 久久狠狠婷婷| 狠狠色丁香婷婷综合| 久久精品亚洲精品国产欧美kt∨| 中文在线一区| 国产精品国产三级国产aⅴ浪潮 | 99国产精品久久久久久久成人热| 欧美国产日韩一区| 亚洲欧洲综合| 91久久精品一区| 欧美高清自拍一区| 亚洲人成网站精品片在线观看| 欧美成人免费全部观看天天性色| 免费成人网www| 亚洲国产精品免费| 午夜精品福利电影| 亚洲夜晚福利在线观看| 国产精品久久久久久久久久免费 | 91久久精品美女高潮| 欧美99久久| 亚洲精品在线观看视频| 91久久午夜| 欧美日韩一区在线观看视频| 亚洲欧美日韩天堂| 亚洲福利视频一区| 欧美bbbxxxxx| 一本色道久久综合亚洲精品不卡| 99热这里只有精品8| 欧美日韩在线另类| 亚洲女同精品视频| 午夜精品福利视频| 欧美精品亚洲| 亚洲影院色无极综合| 亚洲图片自拍偷拍| 国产亚洲女人久久久久毛片| 亚洲小说欧美另类社区| 亚洲一区国产| 在线观看国产精品网站| 久久九九99| 美女脱光内衣内裤视频久久网站| 亚洲乱码日产精品bd| 一区二区不卡在线视频 午夜欧美不卡'| 国产精品实拍| 亚洲图片欧美日产| 亚洲免费小视频| 亚洲高清资源| 在线亚洲欧美视频| 好看的日韩av电影| 亚洲国产网站| 国产精品中文在线| 免费观看久久久4p| 欧美日韩免费观看一区二区三区| 欧美一级久久| 葵司免费一区二区三区四区五区| 精品白丝av| 亚洲免费观看在线视频| 欧美精品在线免费观看| 午夜精品国产精品大乳美女| 久久久综合香蕉尹人综合网| 亚洲一区在线看| 久久午夜精品一区二区| 亚洲欧美日韩综合aⅴ视频| 久久精品最新地址| 亚洲午夜国产成人av电影男同| 久久久久国内| 亚洲小视频在线观看| 久久一区精品| 欧美一区二区精品在线| 免费一级欧美在线大片| 性欧美办公室18xxxxhd| 欧美福利电影在线观看| 久久精品二区| 欧美视频在线播放| 欧美不卡在线视频| 国产精品私人影院| 亚洲欧洲美洲综合色网| 黄色成人av| 亚洲在线视频网站| 日韩视频免费观看| 欧美淫片网站| 在线观看欧美亚洲| 亚洲香蕉伊综合在人在线视看| 亚洲欧洲视频在线| 久久国产精品久久久久久| 亚洲主播在线观看| 欧美成人精品不卡视频在线观看 | 欧美日韩国产高清视频| 久久一二三区| 国产欧美日韩伦理| 久久久久久久综合| 欧美色精品天天在线观看视频| 亚洲国产精品久久久| 伊人夜夜躁av伊人久久| 亚洲欧洲99久久| 亚洲一区二区三区四区在线观看| 欧美刺激午夜性久久久久久久| 美女被久久久| 国产在线拍偷自揄拍精品| 亚洲欧美日韩中文视频| 亚洲欧美国产制服动漫| 欧美精品日韩一区| 欧美福利专区| 亚洲成人自拍视频| 亚洲人成毛片在线播放女女| 欧美午夜精品久久久久免费视| 亚洲欧洲精品一区二区三区不卡 | 亚洲免费在线观看视频| 欧美精品久久久久久| 亚洲国产成人不卡| 亚洲国产精品久久| 久久亚洲精品视频| 免费人成网站在线观看欧美高清| 黄色在线一区| 久久精品日产第一区二区|