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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
????????
???????原創(chuàng):星綻紫輝(rawdata)
http://www.shnenglu.com/rawdata? 2009-1-20
?????? 轉(zhuǎn)載請(qǐng)注明出處

???????關(guān)鍵字: PE? ?增加 ?區(qū)段? section 文件格式

?????? 現(xiàn)在我要給一PE文件增加區(qū)段(section),但是增加區(qū)段后我不希望影響PE文件的正常使用,那么應(yīng)該怎么

做呢?我寫這個(gè)教程的目的,希望能幫學(xué)習(xí)PE格式,當(dāng)然也作為我以后參考的筆記。

??????? 簡(jiǎn)單地說(shuō):PE文件和普通文件沒(méi)有什么區(qū)別,只是存在格式上的差異。另外,當(dāng)你雙擊某個(gè).exe文件

時(shí),Windows Shell 程序?qū)?huì)嘗試解析文件并運(yùn)行它的PE代碼。所以第一步,你必須對(duì)PE格式比較熟悉。現(xiàn)在

網(wǎng)上的PE教程我認(rèn)為最好的就是羅云斌主頁(yè)上的匯編教程了,我在這里長(zhǎng)話短說(shuō),只是討論和我們要解決的

問(wèn)題相關(guān)的方面。

???????? 一般來(lái)講,PE由以下幾個(gè)部分依次排列下來(lái):

????????? 1.?? Dos 頭

????????? 2.???Dos stub??? (通常你不必關(guān)心它的內(nèi)容,重建PE只需完全拷貝即可)?
?
??????????3.???NT 頭
????
????????? 4.??? 節(jié)表

????????? 5.??? 文件對(duì)齊間隙

??????????6.??? 第一節(jié)

????????? 7.??? 第二節(jié)

??????????8.????...

??????????9.????第 n? 節(jié) (文件結(jié)尾)


????????? 對(duì)于PE文件,如果沒(méi)有文件對(duì)齊和內(nèi)存對(duì)齊,那將是非常簡(jiǎn)單了。(但是,太簡(jiǎn)單了就不安全了,不是

嗎?對(duì)于這種格式,當(dāng)初的設(shè)計(jì)者還是動(dòng)了不少腦筋的,呵呵~)。我們可以用非常簡(jiǎn)單的讀文件函數(shù),讀取

各部分結(jié)構(gòu),然后把它重組還原PE。如果你是初次接觸,建議你這樣實(shí)踐一下。

????????
???????? 然后我們討論一下如何增加區(qū)段,我們將盡量保證維持原來(lái)的PE結(jié)構(gòu)的數(shù)據(jù),然后在此基礎(chǔ)上增加我們

的數(shù)據(jù)。現(xiàn)在我把這個(gè)過(guò)程步驟化:

??????? 一、讀取Dos頭

??????? 二、讀取Dos stub

??????? 三、讀取NT頭,根據(jù)Dos頭定位到此

??????? 四、讀取NT頭

??????? 五、讀取節(jié)表

????????六、遍歷讀取所有節(jié)塊


????? 現(xiàn)在,我們把一個(gè)PE文件讀到緩沖區(qū)了。然后我們進(jìn)行修改:試驗(yàn)證明,只需要某些特征項(xiàng)即可,而不

必對(duì)所有參數(shù)進(jìn)行修改,這樣PE文件(如.exe)還是能正常運(yùn)行。對(duì)于具體的節(jié)塊,我們必須給某些關(guān)鍵的

參數(shù)賦值,否則將破壞PE結(jié)構(gòu),導(dǎo)致不能運(yùn)行。


????? 在開(kāi)始修改前,有一些非常關(guān)鍵的東西我們必須知道:文件對(duì)齊和內(nèi)存對(duì)齊。實(shí)際上,所有的section區(qū)

段都是文件對(duì)齊的(你把每一節(jié)當(dāng)成一個(gè)塊,具有起始文件位置和塊大小),比如:第一節(jié)的文件偏移為

1024KB,節(jié)塊大小為1000KB,那么第二節(jié)的文件偏移將是2048KB,而不是2024KB(文件偏移即是節(jié)塊的開(kāi)始

位置)。但這其實(shí)不是一成不變的。你可以修改它,只要滿足文件對(duì)齊,但是帶來(lái)的麻煩是,你必須同時(shí)也

修改它的定位目錄----->節(jié)表里的PointerToRawData文件指針,否則將由于找不到對(duì)應(yīng)的節(jié)塊而產(chǎn)生錯(cuò)誤。

?????? 我常常思考這樣一個(gè)問(wèn)題,到底要不要把PE裝載到內(nèi)存,然后在內(nèi)存中增加區(qū)段,然后把PE內(nèi)存dump成

新的PE文件達(dá)到增加區(qū)段的目的。實(shí)際上,這是完全可行的。但是,直接修改PE文件也是可以的,可以不把

PE裝載到內(nèi)存。因?yàn)槲覀儍H僅是增加區(qū)段,不需要修改引入表之類的東西。在我增加區(qū)段成功后,對(duì)比發(fā)

現(xiàn),節(jié)表里面的Virtual Address 實(shí)際上等于PointerToRawData,節(jié)表里面的Virtual Size 實(shí)際上等于SizeofRawData

(呵呵,我的網(wǎng)名就是rawdata)。于是,我想,這樣的設(shè)計(jì)實(shí)際上是為了簡(jiǎn)化PE程序的設(shè)計(jì)的復(fù)雜性。內(nèi)存對(duì)

齊轉(zhuǎn)化為文件對(duì)齊,一旦設(shè)計(jì)好文件對(duì)齊,那么內(nèi)存對(duì)齊就設(shè)計(jì)好了。但是,你千萬(wàn)不要認(rèn)為兩者一定總是相

等的,實(shí)際它有很大的靈活性,你可以隨意設(shè)計(jì),只要滿足NT頭里面的指定的內(nèi)存對(duì)齊值參數(shù)。

????? 還有一個(gè)關(guān)鍵的要注意的地方:必須重新修改NT頭里面的pINH->OptionalHeader.SizeOfImage值。即整個(gè)PE

在內(nèi)存的全部的映像的大小。我們可以這樣給它賦予新的值:增加1個(gè)新的區(qū)段,就在原來(lái)的SizeOfImage值基

礎(chǔ)上再加上該節(jié)塊大小的文件對(duì)齊值,增加了幾個(gè)區(qū)段,就累加幾次,你應(yīng)該明白了吧?

????
????? 如果你感覺(jué)我的語(yǔ)言表達(dá)很糟糕,請(qǐng)你諒解。不過(guò),請(qǐng)你放心,我后面會(huì)給出源代碼。其實(shí)主要做的工

作就是在文件尾加上一些數(shù)據(jù),然后修改文件頭的一些參數(shù),僅此而已,沒(méi)有什么神奇的地方,還等什么?

趕快去寫一個(gè)PE加區(qū)工具吧~~~?

???? 代碼清單如下:??? (平臺(tái): window console)
???? 把其中的PE文件名該為你想加區(qū)的PE文件名就可以了。

??1/**************************************************************************
??2*????文件名:????????Main.cpp
??3*????日??期:????????2009年1月13日
??4*????作??者:????????rawdata
??5*????描??述:????????
??6***************************************************************************/

??7
??8#include?<windows.h>
??9#include?<windowsx.h>
?10#include?<winnt.h>
?11#include?<iostream>
?12using?namespace?std;
?13
?14#pragma?warning(disable:4312)
?15#pragma?warning(disable:4311)
?16#pragma?warning(disable:4244)
?17
?18int?main(int?argc,char**argv)
?19{
?20????//-------------------?主要緩沖區(qū)定義?----------------------
?21????
?22????BYTE*?pDos?=?NULL;????????//Dos頭和Stub區(qū)
?23????DWORD?dwSizeDos?=?0;????//Dos頭?大小
?24????DWORD?dwSizeStub?=?0;????//Dos?Stub區(qū)大小
?25
?26????BYTE*?pNT?=?NULL;????????//NT頭
?27????DWORD?dwSizeNT?=?0;????????//該區(qū)大小
?28
?29????BYTE*?pSecH?=?NULL;????????//節(jié)表
?30????DWORD?dwSizeSecH?=?0;????//該區(qū)大小
?31????WORD?dwSizeAdd?=?3;????????//增加的節(jié)的個(gè)數(shù)
?32
?33????BYTE*?pDelta?=?NULL;????//文件對(duì)齊填充數(shù)據(jù)
?34????DWORD?dwSizeDelta?=?0;????//該區(qū)大小
?35
?36????BYTE*?pPrevSec?=?NULL;????//節(jié)塊
?37????DWORD?dwSizePrevSec?=?0;//該區(qū)大小
?38
?39????BYTE*?pAddSec?=?NULL;????//新增的節(jié)塊
?40????DWORD?dwSizeAddSec?=?0;????//該區(qū)大小
?41
?42????//----------------------?其他臨時(shí)定義?--------------------
?43????
?44????const?char*?pszFilePath?=?NULL;????????????//文件路徑
?45????HANDLE?hFile?=?NULL;????????????????????//文件句柄
?46
?47????PIMAGE_DOS_HEADER????????pIDH?=?NULL;????//Dos頭
?48????PIMAGE_NT_HEADERS????????pINH?=?NULL;????//NT?頭
?49????PIMAGE_SECTION_HEADER*????ppISH?=?NULL;????//節(jié)表
?50
?51????DWORD?dwRealRead?=?0;????????????????????//實(shí)際每次文件讀取的字節(jié)數(shù)
?52????DWORD?dwMiniPointer?=?0;????????????????//第一個(gè)section的位置
?53????BOOL?bNeedModify?=?FALSE;????????????????//是否有必要需要修改節(jié)塊的文件指針
?54
?55????DWORD?dwRawDataSize?=?10*1024;????????????????//增加區(qū)段的數(shù)據(jù)大小
?56
?57????DWORD?dwTmp=0,dwTmp2=0,dwTmp3?=?0;
?58????
?59????//Dos?頭
?60????//===============================================================================
?61????//打開(kāi)文件、讀取Dos頭
?62
?63????pszFilePath?=?argv[0];
?64????pszFilePath?=?"BeingInjued.exe";//Test
?65
?66????cout<<"PE?FileName:"<<pszFilePath<<endl;
?67
?68????if(0?==?lstrcmp(pszFilePath,""))
?69????{
?70????????cout<<"文件路徑不能為空!"<<endl;
?71????????return?-1;
?72????}

?73
?74????hFile?=?CreateFile(pszFilePath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,
?75????????FILE_ATTRIBUTE_NORMAL,NULL);
?76
?77????if(INVALID_HANDLE_VALUE?==?hFile)
?78????{
?79????????cout<<"打開(kāi)文件失敗!"<<endl;
?80????????hFile?=?NULL;
?81????????goto?Error;
?82????}

?83
?84????dwSizeDos?=?sizeof(IMAGE_DOS_HEADER);
?85????pDos?=?new?BYTE[dwSizeDos];
?86????memset(pDos,0,dwSizeDos);
?87
?88????if(!ReadFile(hFile,pDos,dwSizeDos,&dwRealRead,NULL))
?89????{
?90????????cout<<"讀取Dos頭失敗!"<<endl;
?91????????goto?Error;
?92????}

?93????cout<<"Dos?Header:?"<<dwRealRead<<"bytes?have?read."<<endl;
?94
?95????//獲得IMAGE_DOS_HEADER指針,效驗(yàn)
?96????pIDH?=?(PIMAGE_DOS_HEADER)pDos;
?97????if(memcmp(&(pIDH->e_magic),"MZ",2)!=0)
?98????{
?99????????cout<<"不是有效的PE文件格式!"<<endl;
100????????goto?Error;
101????}

102
103????//DOS?Stub
104????//================================================================================
105????
106????dwSizeStub?=?pIDH->e_lfanew?-?dwSizeDos;
107????pDos?=?(BYTE*)realloc(pDos,dwSizeDos?+?dwSizeStub);
108????memset(pDos+dwSizeDos,0,dwSizeStub);
109????
110????if(!ReadFile(hFile,pDos+dwSizeDos,dwSizeStub,&dwRealRead,NULL))
111????{
112????????cout<<"讀取DosStub失敗!"<<endl;
113????????goto?Error;
114????}

115????cout<<"Dos?Stub:?"<<dwRealRead<<"bytes?have?read."<<endl;
116
117????//NT?Header
118????//================================================================================
119
120????dwSizeNT?=?sizeof(IMAGE_NT_HEADERS);
121????pNT?=?new?BYTE[dwSizeNT];
122????memset(pNT,0,dwSizeNT);
123????
124????if(!ReadFile(hFile,pNT,dwSizeNT,&dwRealRead,NULL))
125????{
126????????cout<<"讀取NT?Headers失敗!"<<endl;
127????????goto?Error;
128????}

129????
130????//獲得NT指針
131????pINH?=?(PIMAGE_NT_HEADERS)pNT;
132????if(memcmp(&(pINH->Signature),"PE",2)!=0)
133????{
134????????cout<<"錯(cuò)誤的PE文件格式!"<<endl;
135????????goto?Error;
136????}

137
138????//節(jié)表
139????//================================================================================
140????
141????dwSizeSecH?=?(pINH->FileHeader.NumberOfSections?+?dwSizeAdd)?*?sizeof(IMAGE_SECTION_HEADER);
142????pSecH?=?new?BYTE[dwSizeSecH];
143????memset(pSecH,0,pINH->FileHeader.NumberOfSections?+?dwSizeAdd);
144
145????ppISH?=?(PIMAGE_SECTION_HEADER*)new?DWORD[pINH->FileHeader.NumberOfSections?+?dwSizeAdd];
146????memset(ppISH,0,sizeof(DWORD)*(pINH->FileHeader.NumberOfSections?+?dwSizeAdd));
147
148????for(UINT?i=0;i<pINH->FileHeader.NumberOfSections;i++)
149????{
150????????if(!ReadFile(hFile,pSecH+i*sizeof(IMAGE_SECTION_HEADER),
151????????????sizeof(IMAGE_SECTION_HEADER),&dwRealRead,NULL))
152????????{
153????????????cout<<"讀取Section?Headers失敗!"<<endl;
154????????????goto?Error;
155????????}

156????????
157????????ppISH[i]?=?(PIMAGE_SECTION_HEADER)(pSecH+i*sizeof(IMAGE_SECTION_HEADER));
158????????
159????????cout<<"Name:?"<<ppISH[i]->Name<<endl;
160????????cout<<"Size:?"<<ppISH[i]->SizeOfRawData<<endl;
161????????cout<<"Virtual?Adress:?"<<ppISH[i]->VirtualAddress<<endl;
162????????cout<<"PointerToRawData:?"<<ppISH[i]->PointerToRawData<<endl;
163????}

164????cout<<endl;
165
166
167????//節(jié)塊?
168????//================================================================================
169
170????pPrevSec?=?(BYTE*)malloc(0);
171????for(i=0;i<pINH->FileHeader.NumberOfSections;i++)
172????{
173????????dwTmp?=?ppISH[i]->SizeOfRawData;
174????????pPrevSec?=?(BYTE*)realloc(pPrevSec,dwTmp2?+?dwTmp);
175????????memset(pPrevSec+dwTmp2,0,dwTmp);
176????????
177????????SetFilePointer(hFile,ppISH[i]->PointerToRawData,NULL,FILE_BEGIN);
178
179????????cout<<i<<":PointerToRawData:"<<ppISH[i]->PointerToRawData<<endl;
180????????cout<<"BlockSize:"<<ppISH[i]->SizeOfRawData<<endl;
181????????cout<<"Virtual?Address:"<<ppISH[i]->VirtualAddress<<endl;
182
183????????if(!ReadFile(hFile,pPrevSec+dwTmp2,dwTmp,&dwRealRead,NULL)){
184????????????cout<<"ReadFile?Faield!"<<endl;
185????????????goto?Error;
186????????}

187
188????????dwTmp2?+=?dwTmp;
189????}

190????dwSizePrevSec?=?dwTmp2;
191
192
193????//數(shù)據(jù)填補(bǔ)、修改部分
194????//================================================================================
195
196????//第一個(gè)節(jié)塊的位置
197????for(i=0;i<pINH->FileHeader.NumberOfSections;i++)
198????{
199????????if(ppISH[i])
200????????{
201????????????if(0?==?dwMiniPointer)
202????????????????dwMiniPointer?=?(DWORD)ppISH[i]->PointerToRawData;
203????????????
204????????????if((ppISH[i]->PointerToRawData)<dwMiniPointer)
205????????????????dwMiniPointer?=?(DWORD)ppISH[i]->PointerToRawData;
206????????}

207????}

208????cout<<"Prev?First?Section?Pos:"<<dwMiniPointer<<endl;
209
210????//空白填充區(qū)大小????,先計(jì)算好
211????dwTmp?=?(dwSizeDos+dwSizeStub+dwSizeNT+dwSizeSecH);
212????if(dwMiniPointer?>=?dwTmp)
213????????dwSizeDelta?=?dwMiniPointer?-?dwTmp;
214????else
215????{
216????????dwSizeDelta?=?dwTmp?%?(pINH->OptionalHeader.FileAlignment);
217????????
218????????if(dwSizeDelta?!=?0)
219????????????dwSizeDelta?=?pINH->OptionalHeader.FileAlignment?-?dwSizeDelta;
220????????else?dwSizeDelta?=?0;
221
222????????bNeedModify?=?TRUE;
223????}

224????cout<<"Delta:"<<dwSizeDelta<<endl;
225????pDelta?=?new?BYTE[dwSizeDelta];
226????memset(pDelta,0,dwSizeDelta);
227
228????dwMiniPointer?=?dwTmp;
229????dwMiniPointer?+=?dwSizeDelta;
230
231????//修改?NT?頭,必須修改
232????pINH->FileHeader.NumberOfSections?+=?dwSizeAdd;
233
234????
235????//修改原來(lái)節(jié)表頭的文件指針
236????cout<<endl;
237????if(bNeedModify)
238????{
239????????for(i=0;i<(UINT)(pINH->FileHeader.NumberOfSections?-?dwSizeAdd);i++)
240????????{
241????????????if(0?!=?i)
242????????????????ppISH[i]->PointerToRawData?=
243????????????????ppISH[i-1]->PointerToRawData?+
244????????????????ppISH[i-1]->SizeOfRawData;
245????????????else
246???????????????ppISH[i]->PointerToRawData?=?dwMiniPointer;
247????????????cout<<"New?Entry:"<<i<<":?"<<ppISH[i]->PointerToRawData<<endl;
248????????}

249????}

250
251????//填充增加的節(jié)表頭
252????cout<<endl;
253????char?szName[8]?=?".";
254????char?szNum[7]?=?{0};
255????szName[5]?=?0;
256????dwTmp?=?ppISH[0]->VirtualAddress;
257????dwTmp2?=?pINH->OptionalHeader.SectionAlignment;
258????dwTmp3?=?pINH->OptionalHeader.FileAlignment;
259????int?nCount?=?1;
260????DWORD?dwNewAllocSize?=?0;
261
262????for(i=(pINH->FileHeader.NumberOfSections?-?dwSizeAdd);
263????????i<pINH->FileHeader.NumberOfSections;i++)
264????{???????????????????????????????????????????????????
265????????ppISH[i]?=?(PIMAGE_SECTION_HEADER)(pSecH+i*sizeof(IMAGE_SECTION_HEADER));
266????????memset(ppISH[i],0,sizeof(IMAGE_SECTION_HEADER));
267????????
268????????ppISH[i]->Characteristics?=?ppISH[0]->Characteristics;
269????????
270????????sprintf(szNum,"%d",nCount);
271????????memcpy(szName+1,szNum,7);
272????????memcpy(ppISH[i]->Name,szName,8);
273
274????????dwNewAllocSize?=?dwRawDataSize?%?dwTmp3;
275????????if(dwNewAllocSize?!=?0)
276???????????dwNewAllocSize?=?dwRawDataSize?+?(dwTmp3?-?dwNewAllocSize);
277????????else?dwNewAllocSize?=?dwRawDataSize;
278????????ppISH[i]->SizeOfRawData?=?dwNewAllocSize;
279
280????????//增加的文件區(qū)段
281????????dwSizeAddSec?+=?ppISH[i]->SizeOfRawData;
282????????
283????????dwNewAllocSize?=?dwRawDataSize?%?dwTmp2;
284????????if(dwNewAllocSize?!=?0)
285???????????dwNewAllocSize?=?dwRawDataSize?+?(dwTmp2?-?dwNewAllocSize);
286????????else?dwNewAllocSize?=?dwRawDataSize;
287
288????????ppISH[i]->Misc.VirtualSize?=?dwNewAllocSize;
289
290????????//修改NT頭,必須修改
291????????pINH->OptionalHeader.SizeOfImage?+=?dwNewAllocSize;
292
293????????ppISH[i]->PointerToRawData?=?(ppISH[i-1]->PointerToRawData+ppISH[i-1]->SizeOfRawData);?????????
294
295????????ppISH[i]->VirtualAddress?=?ppISH[i]->PointerToRawData;
296????????if(ppISH[i]->VirtualAddress>=(0x7FFFFFFF-dwNewAllocSize))
297????????{
298????????????cout<<"Error!Virtual?address?overflow!"<<endl;
299????????????goto?Error;
300????????}

301????????cout<<"New?Entry:"<<i<<":?"<<ppISH[i]->PointerToRawData<<endl;
302????????nCount++;
303????}

304
305????//修改NT頭,可選,不設(shè)置也能正常運(yùn)行,但是為保證數(shù)據(jù)準(zhǔn)確,還是寫上
306????pINH->OptionalHeader.SizeOfHeaders?=?dwMiniPointer;
307
308
309
310????//新的Sections,必須滿足文件對(duì)齊
311????pAddSec?=?new?BYTE[dwSizeAddSec];
312????memset(pAddSec,0,dwSizeAddSec);
313
314????//重建文件:?dumpOK.exe
315????//================================================================================
316
317????CloseHandle(hFile);
318????hFile?=?CreateFile("dumpOK.exe",GENERIC_READ|GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,
319????????FILE_ATTRIBUTE_NORMAL,NULL);
320????
321????//Dos?Data
322????if(!WriteFile(hFile,pDos,dwSizeDos+dwSizeStub,&dwRealRead,NULL))
323????{
324????????cout<<"WriteFile?Faield!"<<endl;
325????????goto?Error;
326????}

327????cout<<"Dos?Data:"<<dwRealRead<<"?bytes?write."<<endl;
328
329
330????//NT?頭
331????if(!WriteFile(hFile,pNT,dwSizeNT,&dwRealRead,NULL))
332????{
333????????cout<<"WriteFile?Faield!"<<endl;
334????????goto?Error;
335????}

336????cout<<"NT?Data:"<<dwRealRead<<"?bytes?write."<<endl;
337
338????//節(jié)表??(包括新加的)
339????if(!WriteFile(hFile,pSecH,dwSizeSecH,&dwRealRead,NULL))
340????{
341????????cout<<"WriteFile?Faield!"<<endl;
342????????goto?Error;
343????}

344????cout<<"Section?Headers:"<<dwRealRead<<"?bytes?write."<<endl;
345
346????//填充空白數(shù)據(jù)
347????if(!WriteFile(hFile,pDelta,dwSizeDelta,&dwRealRead,NULL)){
348????????cout<<"WriteFile?Faield!"<<endl;
349????????goto?Error;
350????}

351????cout<<"Delta?Data:"<<dwRealRead<<"?bytes?write."<<endl;
352
353
354????//原來(lái)的節(jié)塊
355????if(!WriteFile(hFile,pPrevSec,dwSizePrevSec,&dwRealRead,NULL)){
356????????cout<<"WriteFile?Faield!"<<endl;
357????????goto?Error;
358????}

359????cout<<"Section?Blocks:"<<dwRealRead<<"?bytes?write."<<endl;
360
361????//增加的節(jié)塊
362????if(!WriteFile(hFile,pAddSec,dwSizeAddSec,&dwRealRead,NULL)){
363????????cout<<"WriteFile?Faield!"<<endl;
364????????goto?Error;
365????}

366????cout<<"Section?Blocks:"<<dwRealRead<<"?bytes?write."<<endl;
367????cout<<"Requeried?Works?Success?Completed."<<endl;
368
369Error:
370????CloseHandle(hFile);
371????delete[]ppISH;????????
372????delete[]pDos;
373????delete[]pNT;
374????delete[]pSecH;
375????delete[]pDelta;
376????delete[]pPrevSec;
377????delete[]pAddSec;
378????return?0;
379}

380
381
382
383
384


????? 如果代碼有什么謬誤或你有更好的解決方案,請(qǐng)留言或者EmailToMe:xiaolu69soft@yahoo.com.cn
希望我的文章對(duì)你有所幫助。
????? rawdata
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人黑人xx视频免费观看| 亚洲欧洲视频| 亚洲欧美日韩综合一区| 国产精一区二区三区| 中文一区二区| 亚洲欧美日本精品| 国产一区清纯| 欧美激情欧美激情在线五月| 欧美粗暴jizz性欧美20| 99精品久久| 亚洲一区二区三区涩| 国产区二精品视| 免费在线播放第一区高清av| 欧美成人一区二区| 亚洲一区二区三区色| 亚洲欧美一区二区三区极速播放 | 欧美一区二区免费视频| 国内揄拍国内精品少妇国语| 欧美国产另类| 欧美日韩日本视频| 亚洲专区在线| 亚洲国产女人aaa毛片在线| 一本一本久久| 国产欧美精品在线观看| 久久精品2019中文字幕| 欧美国产日韩二区| 午夜一区在线| 欧美成人精品一区二区三区| 亚洲一区二区三区777| 欧美亚洲视频在线看网址| 亚洲成人资源| 亚洲欧美日韩天堂| 亚洲国产精品久久久久| 午夜精品久久久久久久99黑人| 亚洲高清不卡在线| 亚洲在线一区| 99国产精品久久久| 久久人人爽爽爽人久久久| 一区二区三区四区五区在线| 欧美中文字幕| 亚洲欧美成人| 欧美国产高清| 免费欧美日韩| 国产尤物精品| 亚洲欧美国产另类| 99精品视频免费全部在线| 久久久久**毛片大全| 亚洲欧美一区在线| 欧美日韩国产不卡| 欧美激情精品久久久六区热门| 国产欧美一区二区三区视频| 亚洲日本成人| 亚洲美女视频在线观看| 久久国产精品网站| 欧美一区不卡| 国产精品成人va在线观看| 亚洲精品综合| 一本色道久久综合亚洲精品小说| 免费久久久一本精品久久区| 久久深夜福利| 好吊成人免视频| 久久久www成人免费精品| 久久精品99国产精品日本| 国产精品专区第二| 亚洲影院一区| 性欧美激情精品| 国产精品网站在线播放| 亚洲欧美另类久久久精品2019| 亚洲专区欧美专区| 国产精品一级二级三级| 亚洲欧美日韩成人高清在线一区| 香蕉成人久久| 国内揄拍国内精品少妇国语| 久久精品国产在热久久| 欧美成人午夜剧场免费观看| 亚洲国产精品999| 欧美精品aa| 亚洲一级黄色片| 欧美在线关看| 亚洲成人资源网| 欧美国产1区2区| 亚洲视频一区在线观看| 久久精品免视看| 亚洲高清久久| 欧美亚韩一区| 欧美一区二区三区四区夜夜大片 | 欧美亚洲免费| 精品成人在线| 欧美精品xxxxbbbb| 亚洲视频一起| 老司机午夜精品视频在线观看| 亚洲黄色性网站| 欧美午夜片欧美片在线观看| 欧美亚洲免费高清在线观看| 欧美成人影音| 亚洲欧美久久| 亚洲国产另类精品专区 | 欧美紧缚bdsm在线视频| 亚洲专区国产精品| 欧美 日韩 国产在线| 亚洲无毛电影| 樱桃成人精品视频在线播放| 欧美激情一区| 久久成人一区| 一本色道久久88综合日韩精品| 久久只精品国产| 亚洲自拍偷拍一区| 亚洲第一精品久久忘忧草社区| 欧美日韩亚洲另类| 久久综合国产精品| 亚洲一二三级电影| 亚洲人成网站精品片在线观看 | 一区二区三区精品视频| 尤妮丝一区二区裸体视频| 欧美日韩综合一区| 久久综合国产精品台湾中文娱乐网| 亚洲视频视频在线| 亚洲第一中文字幕在线观看| 久久不射电影网| 亚洲私人影院| 亚洲日韩中文字幕在线播放| 国产一区二区三区在线观看免费| 欧美视频中文在线看| 欧美激情在线有限公司| 久久―日本道色综合久久| 亚洲欧美一区二区三区久久| 99精品免费| 亚洲日本免费电影| 亚洲国产精品va在线看黑人| 噜噜噜91成人网| 欧美在线观看一区二区三区| 亚洲一区二区三区免费观看 | 国产精品女同互慰在线看| 欧美精品一线| 欧美激情成人在线| 女仆av观看一区| 久久婷婷人人澡人人喊人人爽| 欧美一区二区三区喷汁尤物| 亚洲免费视频一区二区| 亚洲性夜色噜噜噜7777| 一区二区三区欧美在线| 日韩亚洲视频| 国产精品99久久久久久人| 99视频在线精品国自产拍免费观看| 欧美激情一级片一区二区| 欧美高清视频| 亚洲国产日韩在线| 亚洲人精品午夜在线观看| 最近中文字幕mv在线一区二区三区四区| 欧美国产综合视频| 欧美国产在线电影| 亚洲精品日日夜夜| 99国产麻豆精品| 亚洲一级免费视频| 免费在线国产精品| 欧美电影在线观看完整版| 亚洲国产一区二区三区a毛片| 91久久精品一区| 一区二区高清视频| 性娇小13――14欧美| 久久久久久久一区二区| 欧美v亚洲v综合ⅴ国产v| 欧美精品日韩一区| 国产精品videosex极品| 国产视频一区在线观看一区免费| 国产主播精品| 9国产精品视频| 欧美亚洲综合网| 欧美凹凸一区二区三区视频| 亚洲激情二区| 亚洲综合色视频| 久久最新视频| 欧美先锋影音| 尹人成人综合网| 亚洲午夜av电影| 玖玖国产精品视频| a4yy欧美一区二区三区| 久久av红桃一区二区小说| 欧美激情五月| 国产欧美一区二区三区久久| 亚洲欧洲一区二区三区在线观看| 亚洲天堂av综合网| 麻豆精品网站| 夜夜精品视频一区二区| 久久亚洲精品一区| 国产精品久久久久久久久| 在线免费不卡视频| 久久狠狠亚洲综合| 亚洲日本免费| 久久中文精品| 国产精品中文在线| 一区二区欧美精品| 免费日韩av| 亚洲欧美国产视频| 欧美日本一区| 亚洲丶国产丶欧美一区二区三区 | 午夜精品在线看| 亚洲精品视频啊美女在线直播| 久久另类ts人妖一区二区| 国产欧美日韩精品在线|