亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lion-petut-c02.htm

?? 在DOS下編程因為實模式的限制
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>PE教程2: 檢驗PE文件的有效性</title>
</head>

<body bgcolor="#000066" text="#FFFFFF" link="#FFFFCC"
vlink="#FFCCCC" alink="#CCFFCC">

<h1 align="center"><font color="#FFFFCC">PE教程2: 檢驗PE文件的有效性</font></h1>

<p><font size="2">本教程中我們將學習如何檢測給定文件是一有效</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件。<br>
下載 </font><a href="files/PE-tut02.zip"><font size="2">范例</font></a></p>

<h3>理論<font face="Arial, Helvetica, sans-serif">:</font></h3>

<p><font size="2">如何才能校驗指定文件是否為一有效</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件呢</font><font
size="2" face="MS Sans Serif">? </font><font size="2">這個問題很難回答,完全取決于想要的精準程度。您可以檢驗</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件格式里的各個數據結構,或者僅校驗一些關鍵數據結構。大多數情況下,沒有必要校驗文件里的每一個數據結構,只要一些關鍵數據結構有效,我們就認為是有效的</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件了。下面我們就來實現前面的假設。</font></p>

<p><font size="2">我們要驗證的重要數據結構就是 </font><font
size="2" face="MS Sans Serif">PE header</font><font size="2">。從編程角度看,</font><font
size="2" face="MS Sans Serif">PE header </font><font size="2">實際就是一個
</font><font size="2" face="MS Sans Serif">IMAGE_NT_HEADERS </font><font
size="2">結構。定義如下</font><font size="2"
face="MS Sans Serif">:</font></p>

<p><font size="2" face="MS Sans Serif"><b>IMAGE_NT_HEADERS STRUCT
<br>
&nbsp;&nbsp;&nbsp;Signature dd ? <br>
&nbsp;&nbsp;&nbsp;FileHeader IMAGE_FILE_HEADER <> <br>
&nbsp;&nbsp;&nbsp;OptionalHeader IMAGE_OPTIONAL_HEADER32 <> <br>
IMAGE_NT_HEADERS ENDS </b></font></p>

<p><font color="#FFFFCC" size="2" face="MS Sans Serif"><b>Signature</b></font><font
size="2" face="MS Sans Serif"> </font><font size="2">一</font><font
size="2" face="MS Sans Serif">dword</font><font size="2">類型,值為</font><font
size="2" face="MS Sans Serif">50h, 45h, 00h, 00h</font><font
size="2">(</font><font size="2" face="MS Sans Serif">PE\0\0</font><font
size="2">)。</font><font size="2" face="MS Sans Serif"> </font><font
size="2">本域為</font><font size="2" face="MS Sans Serif">PE</font><font
size="2">標記,我們可以此識別給定文件是否為有效</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件。</font><br>
<font color="#FFFFCC" size="2" face="MS Sans Serif"><b>FileHeader
</b></font><font size="2">該結構域包含了關于</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件物理分布的信息,</font><font
size="2" face="MS Sans Serif"> </font><font size="2">比如節數目、文件執行機器等。</font><font
size="2" face="MS Sans Serif"><br>
</font><font color="#FFFFCC" size="2" face="MS Sans Serif"><b>OptionalHeader</b></font><font
size="2" face="MS Sans Serif"> </font><font size="2">該結構域包含了關于</font><font
size="2" face="MS Sans Serif">PE</font><font size="2">文件邏輯分布的信息,雖然域名有</font><font
size="2" face="MS Sans Serif">&quot;</font><font size="2">可選</font><font
size="2" face="MS Sans Serif">&quot;</font><font size="2">字樣,但實際上本結構總是存在的。</font></p>

<p><font size="2">我們目的很明確。如果</font><font
color="#CCFFCC" size="2" face="MS Sans Serif"><b>IMAGE_NT_HEADERS</b></font><font
size="2">的</font><font size="2" face="MS Sans Serif">signature</font><font
size="2">域值等于</font><font size="2" face="MS Sans Serif">&quot;PE\0\0&quot;</font><font
size="2">,那么就是有效的</font><font size="2"
face="MS Sans Serif">PE</font><font size="2">文件。實際上,為了比較方便,</font><font
size="2" face="MS Sans Serif">Microsoft</font><font size="2">已定義了常量</font><font
color="#CCFFCC" size="2" face="MS Sans Serif"><b>IMAGE_NT_SIGNATURE</b></font><font
size="2">供我們使用。</font></p>

<p><font color="#FFCCFF" size="2" face="MS Sans Serif"><b>IMAGE_DOS_SIGNATURE
equ 5A4Dh </b></font><font size="2" face="MS Sans Serif"><b><br>
IMAGE_OS2_SIGNATURE equ 454Eh <br>
IMAGE_OS2_SIGNATURE_LE equ 454Ch <br>
IMAGE_VXD_SIGNATURE equ 454Ch <br>
</b></font><font color="#FFCCFF" size="2" face="MS Sans Serif"><b>IMAGE_NT_SIGNATURE
equ 4550h </b></font></p>

<p><font size="2">接下來的問題是</font><font size="2"
face="MS Sans Serif">: </font><font size="2">如何定位 </font><font
size="2" face="MS Sans Serif">PE header? </font><font size="2">答案很簡單</font><font
size="2" face="MS Sans Serif">: DOS MZ header </font><font
size="2">已經包含了指向 </font><font size="2"
face="MS Sans Serif">PE header </font><font size="2">的文件偏移量。</font><font
size="2" face="MS Sans Serif">DOS MZ header </font><font size="2">又定義成結構</font><font
color="#CCFFCC" size="2"><b> </b></font><font color="#CCFFCC"
size="2" face="MS Sans Serif"><b>IMAGE_DOS_HEADER</b></font><font
size="2" face="MS Sans Serif"> </font><font size="2">。查詢</font><font
size="2" face="MS Sans Serif">windows.inc</font><font size="2">,我們知道
</font><font color="#CCFFCC" size="2" face="MS Sans Serif"><b>IMAGE_DOS_HEADER</b></font><font
size="2" face="MS Sans Serif"> </font><font size="2">結構的</font><font
color="#CC9900" size="2" face="MS Sans Serif"><b>e_lfanew</b></font><font
size="2">成員就是指向 </font><font size="2"
face="MS Sans Serif">PE header </font><font size="2">的文件偏移量。
</font></p>

<p><font size="2">現在將所有步驟總結如下</font><font
size="2" face="MS Sans Serif">:</font></p>

<ol>
    <li><font size="2">首先檢驗文件頭部第一個字的值是否等于
        </font><font color="#CCFFCC" size="2"
        face="MS Sans Serif"><b>IMAGE_DOS_SIGNATURE</b></font><font
        color="#CCFFCC" size="2"><b>,</b></font><font size="2">是則
        </font><font size="2" face="MS Sans Serif">DOS MZ header </font><font
        size="2">有效。</font></li>
    <li><font size="2">一旦證明文件的 </font><font
        size="2" face="MS Sans Serif">DOS header </font><font
        size="2">有效后,就可用</font><font size="2"
        face="MS Sans Serif">e_lfanew</font><font size="2">來定位
        </font><font size="2" face="MS Sans Serif">PE header </font><font
        size="2">了。</font></li>
    <li><font size="2">比較 </font><font size="2"
        face="MS Sans Serif">PE header </font><font size="2">的第一個字的值是否等于</font><font
        color="#CCFFCC" size="2"><b> </b></font><font
        color="#CCFFCC" size="2" face="MS Sans Serif"><b>IMAGE_NT_HEADER</b></font><font
        size="2">。如果前后兩個值都匹配,那我們就認為該文件是一個有效的</font><font
        size="2" face="MS Sans Serif">PE</font><font size="2">文件。</font></li>
</ol>

<h3><font face="Arial, Helvetica, sans-serif">Example:</font></h3>

<p><font face="Fixedsys">.386 <br>
.model flat,stdcall <br>
option casemap:none <br>
include \masm32\include\windows.inc <br>
include \masm32\include\kernel32.inc <br>
include \masm32\include\comdlg32.inc <br>
include \masm32\include\user32.inc <br>
includelib \masm32\lib\user32.lib <br>
includelib \masm32\lib\kernel32.lib <br>
includelib \masm32\lib\comdlg32.lib <br>
<br>
SEH struct <br>
PrevLink dd ? &nbsp;&nbsp;&nbsp;; the address of the previous seh
structure <br>
CurrentHandler dd ?&nbsp;&nbsp;&nbsp; ; the address of the
exception handler <br>
SafeOffset dd ? &nbsp;&nbsp;&nbsp;; The offset where it's safe to
continue execution <br>
PrevEsp dd ? &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; the old value in esp
<br>
PrevEbp dd ? &nbsp;&nbsp;&nbsp;&nbsp;; The old value in ebp <br>
SEH ends<br>
<br>
.data <br>
AppName db &quot;PE tutorial no.2&quot;,0 <br>
ofn OPENFILENAME <> <br>
FilterString db &quot;Executable Files (*.exe,
*.dll)&quot;,0,&quot;*.exe;*.dll&quot;,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
db &quot;All Files&quot;,0,&quot;*.*&quot;,0,0 <br>
FileOpenError db &quot;Cannot open the file for reading&quot;,0 <br>
FileOpenMappingError db &quot;Cannot open the file for memory
mapping&quot;,0 <br>
FileMappingError db &quot;Cannot map the file into memory&quot;,0
<br>
FileValidPE db &quot;This file is a valid PE&quot;,0 <br>
FileInValidPE db &quot;This file is not a valid PE&quot;,0 <br>
<br>
.data? <br>
buffer db 512 dup(?) <br>
hFile dd ? <br>
hMapping dd ? <br>
pMapping dd ? <br>
ValidPE dd ? <br>
<br>
.code <br>
start proc <br>
LOCAL seh:SEH <br>
mov ofn.lStructSize,SIZEOF ofn <br>
mov ofn.lpstrFilter, OFFSET FilterString <br>
mov ofn.lpstrFile, OFFSET buffer <br>
mov ofn.nMaxFile,512 <br>
mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or
OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY <br>
invoke GetOpenFileName, ADDR ofn <br>
.if eax==TRUE <br>
&nbsp;&nbsp;&nbsp; invoke CreateFile, addr buffer, GENERIC_READ,
FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
<br>
&nbsp;&nbsp;&nbsp; .if eax!=INVALID_HANDLE_VALUE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov hFile, eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke CreateFileMapping,
hFile, NULL, PAGE_READONLY,0,0,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .if eax!=NULL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov
hMapping, eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; invoke
MapViewOfFile,hMapping,FILE_MAP_READ,0,0,0 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .if
eax!=NULL <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov pMapping,eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
assume fs:nothing <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
push fs:[0] <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pop seh.PrevLink <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.CurrentHandler,offset SEHHandler <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.SafeOffset,offset FinalExit <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lea eax,seh <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov fs:[0], eax <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.PrevEsp,esp <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov seh.PrevEbp,ebp <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mov edi, pMapping <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
assume edi:ptr IMAGE_DOS_HEADER <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
.if [edi].e_magic==IMAGE_DOS_SIGNATURE <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
add edi, [edi].e_lfanew <br>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久精品人人做人人爽50路 | 亚洲一级二级三级在线免费观看| 久久免费国产精品| 亚洲色图欧美偷拍| 黄色日韩三级电影| 欧美日韩亚洲综合一区二区三区 | av在线综合网| 欧美成人激情免费网| 亚洲欧美精品午睡沙发| 国产精品一二三四五| 欧美日韩久久久一区| 国产精品国产三级国产aⅴ入口 | 国产精品一二三在| 日韩丝袜情趣美女图片| 亚洲成人动漫在线免费观看| av在线免费不卡| 久久女同精品一区二区| 日韩激情中文字幕| 蜜臀av一区二区在线免费观看| 精品无人码麻豆乱码1区2区| 欧美制服丝袜第一页| 中文字幕一区二区三区在线观看 | 欧美性三三影院| 专区另类欧美日韩| 不卡av在线免费观看| 国产日韩一级二级三级| 久久精品国产网站| 欧美一二三在线| 日本美女一区二区三区视频| 欧美日韩一区二区在线观看| 亚洲欧美另类小说视频| 91国偷自产一区二区三区成为亚洲经典 | 日韩电影免费在线| 欧美精品久久久久久久久老牛影院 | 九色综合国产一区二区三区| 91精品国产综合久久婷婷香蕉 | 日韩西西人体444www| 日韩电影在线观看电影| 欧美日韩夫妻久久| 男女视频一区二区| 精品久久99ma| 国产一区在线看| 国产拍揄自揄精品视频麻豆| 成人开心网精品视频| 亚洲色图制服诱惑 | 亚洲精品视频在线观看免费 | 亚洲精品视频一区二区| 欧美在线色视频| 亚洲h在线观看| 欧美一区二区视频观看视频| 狠狠色丁香婷综合久久| 欧美激情在线观看视频免费| 97国产一区二区| 亚洲一区二区三区四区的 | 韩国精品一区二区| 久久精品免费在线观看| 99这里只有久久精品视频| 亚洲最大的成人av| 日韩欧美国产小视频| 国产不卡视频在线播放| 樱花影视一区二区| 欧美一区二区成人| 成人黄色大片在线观看| 亚洲国产精品尤物yw在线观看| 欧美va亚洲va| 91在线云播放| 免费成人深夜小野草| 中文在线资源观看网站视频免费不卡| 91美女片黄在线观看| 免费的国产精品| 中文字幕欧美一| 日韩欧美一卡二卡| 色综合天天综合网天天狠天天| 秋霞成人午夜伦在线观看| 中文字幕一区免费在线观看| 日韩欧美成人午夜| 国产精品国产三级国产三级人妇| av电影天堂一区二区在线观看| 婷婷六月综合网| 中文字幕制服丝袜成人av | 2020国产精品| 一本色道综合亚洲| 国产在线播精品第三| 一区二区三区在线视频免费 | 国产69精品久久777的优势| 亚洲成av人片一区二区| 国产视频911| 日韩欧美中文一区| 在线观看亚洲一区| 成人综合在线观看| 另类的小说在线视频另类成人小视频在线| 国产精品麻豆久久久| 日韩欧美激情在线| 欧美精品粉嫩高潮一区二区| 一本高清dvd不卡在线观看| 国产精品77777| 美国十次综合导航| 午夜精品免费在线| 亚洲综合成人在线视频| 亚洲欧洲在线观看av| 国产精品素人视频| 久久婷婷成人综合色| 91精品国产乱码久久蜜臀| 欧亚洲嫩模精品一区三区| 成人福利视频在线看| 国产精品一线二线三线精华| 日韩精品免费视频人成| 午夜一区二区三区视频| 亚洲大片免费看| 亚洲成av人影院| 亚洲成年人影院| 亚洲电影一级片| 一区二区三区四区五区视频在线观看| 国产精品久久久久影视| 国产精品嫩草99a| 国产精品色在线观看| 国产欧美一区二区三区在线老狼| 精品国产91久久久久久久妲己| 精品三级在线看| 精品人在线二区三区| 欧美一级夜夜爽| 日韩一级在线观看| 精品电影一区二区三区| 26uuu久久综合| 亚洲国产成人私人影院tom| 中文字幕亚洲一区二区va在线| 国产精品沙发午睡系列990531| 亚洲欧洲色图综合| 亚洲大尺度视频在线观看| 亚洲v精品v日韩v欧美v专区| 日韩高清不卡一区二区三区| 成人深夜福利app| 成人av电影观看| 欧亚一区二区三区| 日韩精品专区在线影院观看 | 欧美精品日日鲁夜夜添| 欧美一级高清大全免费观看| 欧美精品一区二区三区一线天视频 | 久久综合av免费| 国产女同性恋一区二区| 亚洲女与黑人做爰| 免费观看久久久4p| 成人一区二区三区视频在线观看 | 丁香激情综合国产| 91视频xxxx| 91精品一区二区三区在线观看| 精品国产百合女同互慰| 自拍偷拍亚洲综合| 美女久久久精品| 不卡一区中文字幕| 欧美乱妇20p| 国产区在线观看成人精品| 亚洲激情欧美激情| 狠狠久久亚洲欧美| 在线免费亚洲电影| 久久九九影视网| 一区二区三区四区亚洲| 韩国欧美一区二区| 欧美视频一区二区三区四区| 精品国精品自拍自在线| 一卡二卡欧美日韩| 国产美女在线精品| 欧美日韩精品欧美日韩精品一综合| 欧美成人乱码一区二区三区| 亚洲综合激情小说| 成人综合婷婷国产精品久久蜜臀| 欧美日韩精品一区二区三区 | 91在线精品秘密一区二区| 日韩午夜小视频| 一区二区三区自拍| 国产精品99久久久久久久女警 | jlzzjlzz亚洲女人18| 欧美成人精品福利| 午夜伦欧美伦电影理论片| 91在线精品一区二区三区| 久久久久久久久久电影| 日本成人在线网站| 欧美三级午夜理伦三级中视频| 国产精品乱码一区二区三区软件| 免费久久99精品国产| 欧美专区亚洲专区| 亚洲欧美区自拍先锋| 粉嫩av亚洲一区二区图片| 精品日韩一区二区三区| 亚洲国产成人av网| 日本久久一区二区三区| 亚洲欧美日韩久久| jlzzjlzz亚洲日本少妇| 国产精品色一区二区三区| 国产一区二区三区电影在线观看| 欧美一区二区三区婷婷月色| 亚洲成人手机在线| 欧美午夜精品电影| 一区二区三区蜜桃网| 色素色在线综合| 亚洲黄色尤物视频| 色呦呦日韩精品| 一区二区三国产精华液| 91福利视频久久久久| 亚洲色图视频免费播放|