// 同時遍歷pe檔案的匯入表、匯出表的函式名
#include#include#pragma warning(disable : 4996)
dword rva_2_raw(char *buf, dword rva, dword raw, bool flag);
dword import(char *buf);
dword export(char *buf);
void main()
fseek(fp, 0, seek_end); // 設定檔案流指標指向pe檔案的結尾處
pefilesize = ftell(fp); // 得到檔案流指標當前位置相對於檔案頭部的偏移位元組數,即獲取到了pe檔案大小(位元組)
char *buf = new char[pefilesize]; // 新建乙個陣列指標buf,指向乙個以pe檔案位元組數作為大小的陣列
memset(buf, 0, pefilesize); // buf指標指向記憶體中陣列的開始位置
// 在這裡用0初始化一塊pefilesize大小的記憶體,即為陣列分配記憶體
fseek(fp, 0, seek_set); // 將檔案流指標指向pe檔案頭部
fread(buf, 1, pefilesize, fp); // 從給定輸入流fp中讀取pefilesize大小個資料項儲存到buf字元陣列中,每項大小為1位元組
// 這樣將pe檔案讀入記憶體實際上就讓buf指向了pe檔案的基位址imagebase
fclose(fp);
import(buf); // 這個buf在接下來的操作中將一直指向檔案的首位址,也就是imagebase檔案基址
export(buf);
delete buf;
}// 檔案已經讀取到記憶體中了
dword rva_2_raw(char *buf, dword rva, dword raw, bool flag) // rva為匯入表或匯出表的rva;flag為1,rva轉偏移,為0反過來——事實上此程式只用到了1
for (; i < sectionnumber;i++) // 有多少節區就迴圈幾次,從第乙個節區表開始操作,如果pe檔案有n個節,那麼區塊表就是由n個image_section_header組成的陣列
}} else
for (; i < sectionnumber; i++)
}} return imp_exp_fa;
}// 匯入表一般包含dll和普通api兩部分,因此要分別考慮
// 3.若開啟檔案成功,則獲取檔案的大小
dword dwfilesize = getfilesize(hfile, null);
// 4.申請記憶體空間,用於存放檔案資料
byte * filebuffer = new byte[dwfilesize];
// 5.讀取檔案內容
dword dwreadfile = 0;
readfile(hfile, filebuffer, dwfilesize, &dwreadfile, null);
// 6.判斷這個檔案是不是乙個有效的pe檔案
// 6.1 先檢查dos頭中的mz標記,判斷e_magic欄位是否為0x5a4d,或者是image_dos_signature
dword dwfileaddr = (dword)filebuffer;
auto dosheader = (pimage_dos_header)dwfileaddr;
if (dosheader->e_magic != image_dos_signature)
// 6.2 若都通過的話再獲取nt頭所在的位置,並判斷e_lfanew欄位是否為0x00004550,
// 或者是image_nt_signature
auto ntheader = (pimage_nt_headers)(dwfileaddr + dosheader->e_lfanew);
if (ntheader->signature != image_nt_signature)
// 7.若上述都通過,則為乙個有效的pe檔案
messagebox(null, text("這是乙個有效pe檔案"), text("提示"), mb_ok);
delete filebuffer;
closehandle(hfile);
// 8.結束程式
return 0;
}
1、va、rva、raw、foa、fa 是什麼鬼?2、匯入函式中幾個重要結構3、pe檔案結構圖,乙個帶偏移量、乙個不帶,都要看 c 中匯入 匯出Excel表
c 匯入 匯出excel 新建乙個專案,新增web引用 這個web服務就只是返回dataset資料而已 要使用excel,需加的命名空間 using microsoft.office.interop.excel using system.reflection using system.io 需新增引...
表的匯入,匯出
if exists select from dbo.sysobjects where id object id n dbo librarycheck and objectproperty id,n isusertable 1 drop table librarycheck select into l...
Oracle 匯入匯出表
下面介紹的是匯入匯出的例項,向匯入匯出看例項基本上就可以完成,因為匯入匯出很簡單。資料匯出 1 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中 exp system manager orcl 127.0.0.1 file d daochu.dm...