国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

網絡安全編程:PE編程實例之PE查看器

安全 應用安全
寫PE查看器并不是件復雜的事情,只要按照PE結構一步一步地解析就可以了。下面簡單地解析其中幾個字段內容,顯示一下節表的信息,其余的內容只要稍作修改即可。

[[395692]]

微信公眾號:計算機與網絡安全

ID:Computer-network

寫PE查看器并不是件復雜的事情,只要按照PE結構一步一步地解析就可以了。下面簡單地解析其中幾個字段內容,顯示一下節表的信息,其余的內容只要稍作修改即可。PE查看器的界面如圖1所示。

 

 

 

圖1 PE查看器解析記事本程序 

 

 

PE查看器的界面按照圖1所示的設置,不過這個可以按照個人的偏好進行布局設置。編寫該PE查看器的步驟為打開文件并創建文件內存映像,判斷文件是否為PE文件并獲得PE格式相關結構體的指針,解析基本的PE字段,枚舉節表,最后關閉文件。需要在類中添加幾個成員變量及成員函數,添加的內容如圖2所示。

 

 

 

圖2 在類中添加的成員變量及成員函數 

 

 

按照前面所說的順序,依次實現添加的各個成員函數。

  1. BOOL CPeParseDlg::FileCreate(char *szFileName) 
  2.   BOOL bRet = FALSE
  3.   m_hFile = CreateFile(szFileName, 
  4.     GENERIC_READ | GENERIC_WRITE, 
  5.     FILE_SHARE_READ,NULL,OPEN_EXISTING, 
  6.     FILE_ATTRIBUTE_NORMAL,NULL); 
  7.   if ( m_hFile == INVALID_HANDLE_VALUE ) 
  8.   { 
  9.     return bRet; 
  10.   } 
  11.   m_hMap = CreateFileMapping(m_hFile, NULL
  12.     PAGE_READWRITE | SEC_IMAGE,0, 0, 0); 
  13.   if ( m_hMap == NULL ) 
  14.   { 
  15.     CloseHandle(m_hFile); 
  16.     return bRet; 
  17.   } 
  18.   m_lpBase = MapViewOfFile(m_hMap, 
  19.     FILE_MAP_READ | FILE_SHARE_WRITE, 
  20.     0, 0, 0); 
  21.   if ( m_lpBase == NULL ) 
  22.   { 
  23.     CloseHandle(m_hMap); 
  24.     CloseHandle(m_hFile); 
  25.     return bRet; 
  26.   } 
  27.   bRet = TRUE
  28.   return bRet; 

這個函數的主要功能是打開文件并創建內存文件映像。通常對文件進行連續讀寫時直接使用ReadFile()和WriteFile()兩個函數。當不連續操作文件時,每次在ReadFile()或者WriteFile()后就要使用SetFilePointer()來調整文件指針的位置,這樣的操作較為繁瑣。內存文件映像的作用是把整個文件映射入進程的虛擬空間中,這樣操作文件就像操作內存變量或內存數據一樣方便。

創建內存文件映像所使用的函數有兩個,分別是CreateFileMapping()和MapViewOfFile()。CreateFileMapping()函數的定義如下: 

  1. HANDLE CreateFileMapping( 
  2.  HANDLE hFile, 
  3.  LPSECURITY_ATTRIBUTES lpAttributes, 
  4.  DWORD flProtect, 
  5.  DWORD dwMaximumSizeHigh, 
  6.  DWORD dwMaximumSizeLow, 
  7.  LPCTSTR lpName 
  8. ); 

參數說明如下。

hFile:該參數是 CreateFile()函數返回的句柄。

lpAttributes:是安全屬性,該值通常是 NULL。

flProtect:創建文件映射后的屬性,通常設置為可讀可寫 PAGE_READWRITE。如果需要像裝載可執行文件那樣把文件映射入內存的話,那么需要使用 SEC_IMAGE。最后3個參數在這里為0。如果創建的映射需要在多進程中共享數據的話,那么最后一個參數設定為一個字符串,以便通過該名稱找到該塊共享內存。

該函數的返回值為一個內存映射的句柄。

MapViewOfFile()函數的定義如下: 

  1. LPVOID MapViewOfFile( 
  2.  HANDLE hFileMappingObject, 
  3.  DWORD dwDesiredAccess, 
  4.  DWORD dwFileOffsetHigh, 
  5.  DWORD dwFileOffsetLow, 
  6.  SIZE_T dwNumberOfBytesToMap 
  7. ); 

參數說明如下。

hFileMappingObject:該參數為 CreateFileMapping()返回的句柄。

dwDesiredAccess:想獲得的訪問權限,通常情況下也是可讀可寫 FILE_MAP_READ、FILE_MAP_WRITE。

最后3個參數一般給0值就可以了。

按照編程的規矩,打開要關閉,申請要釋放。CreateFileMapping()的關閉需要使用CloseHandle()函數。MapViewOfFile()的關閉,要使用UnmapViewOfFile()函數,該函數的定義如下: 

  1. BOOL UnmapViewOfFile( 
  2.  LPCVOID lpBaseAddress 
  3. ); 

該函數的參數就是MapViewOfFile()函數的返回值。

接著說PE查看器,文件已經打開,就要判斷文件是否為有效的PE文件了。如果是有效的PE文件,就把解析PE格式的相關結構體的指針也得到。代碼如下: 

  1. BOOL CPeParseDlg::IsPeFileAndGetPEPointer() 
  2.   BOOL bRet = FALSE
  3.   // 判斷是否為 MZ 頭 
  4.   m_pDosHdr = (PIMAGE_DOS_HEADER)m_lpBase; 
  5.   if ( m_pDosHdr->e_magic != IMAGE_DOS_SIGNATURE ) 
  6.   { 
  7.     return bRet; 
  8.   } 
  9.   // 根據 IMAGE_DOS_HEADER 的 e_lfanew 的值得到 PE 頭的位置 
  10.   m_pNtHdr = (PIMAGE_NT_HEADERS)((DWORD)m_lpBase + m_pDosHdr->e_lfanew); 
  11.   // 判斷是否為 PE\0\0 
  12.   if ( m_pNtHdr->Signature != IMAGE_NT_SIGNATURE ) 
  13.   { 
  14.     return bRet; 
  15.   } 
  16.   // 獲得節表的位置 
  17.   m_pSecHdr = (PIMAGE_SECTION_HEADER)((DWORD)&(m_pNtHdr->OptionalHeader) 
  18.     + m_pNtHdr->FileHeader.SizeOfOptionalHeader); 
  19.   bRet = TRUE
  20.   return bRet; 

這段代碼應該非常容易理解,繼續看解析PE格式的部分。 

  1. VOID CPeParseDlg::ParseBasePe() 
  2.   CString StrTmp; 
  3.   // 入口地址 
  4.   StrTmp.Format("%08X", m_pNtHdr->OptionalHeader.AddressOfEntryPoint); 
  5.   SetDlgItemText(IDC_EDIT_EP, StrTmp); 
  6.   // 映像基地址 
  7.   StrTmp.Format("%08X", m_pNtHdr->OptionalHeader.ImageBase); 
  8.   SetDlgItemText(IDC_EDIT_IMAGEBASE, StrTmp); 
  9.   // 連接器版本號 
  10.   StrTmp.Format("%d.%d"
  11.     m_pNtHdr->OptionalHeader.MajorLinkerVersion, 
  12.     m_pNtHdr->OptionalHeader.MinorLinkerVersion); 
  13.   SetDlgItemText(IDC_EDIT_LINKVERSION, StrTmp); 
  14.   // 節表數量 
  15.   StrTmp.Format("%02X", m_pNtHdr->FileHeader.NumberOfSections); 
  16.   SetDlgItemText(IDC_EDIT_SECTIONNUM, StrTmp); 
  17.   // 文件對齊值大小 
  18.   StrTmp.Format("%08X", m_pNtHdr->OptionalHeader.FileAlignment); 
  19.   SetDlgItemText(IDC_EDIT_FILEALIGN, StrTmp); 
  20.   // 內存對齊值大小 
  21.   StrTmp.Format("%08X", m_pNtHdr->OptionalHeader.SectionAlignment); 
  22.   SetDlgItemText(IDC_EDIT_SECALIGN, StrTmp); 

PE格式的基礎信息,就是簡單地獲取結構體的成員變量,沒有過多復雜的內容。獲取導入表、導出表比獲取基礎信息復雜。接下來進行節表的枚舉,具體代碼如下: 

  1. VOID CPeParseDlg::EnumSections() 
  2.   int nSecNum = m_pNtHdr->FileHeader.NumberOfSections; 
  3.   int i = 0; 
  4.   CString StrTmp; 
  5.   for ( i = 0; i < nSecNum; i ++ ) 
  6.   { 
  7.     m_SectionLIst.InsertItem(i, (const char *)m_pSecHdr[i].Name); 
  8.     StrTmp.Format("%08X", m_pSecHdr[i].VirtualAddress); 
  9.     m_SectionLIst.SetItemText(i, 1, StrTmp); 
  10.     StrTmp.Format("%08X", m_pSecHdr[i].Misc.VirtualSize); 
  11.     m_SectionLIst.SetItemText(i, 2, StrTmp); 
  12.     StrTmp.Format("%08X", m_pSecHdr[i].PointerToRawData); 
  13.     m_SectionLIst.SetItemText(i, 3, StrTmp); 
  14.     StrTmp.Format("%08X", m_pSecHdr[i].SizeOfRawData); 
  15.     m_SectionLIst.SetItemText(i, 4, StrTmp); 
  16.     StrTmp.Format("%08X", m_pSecHdr[i].Characteristics); 
  17.     m_SectionLIst.SetItemText(i, 5, StrTmp); 
  18.   } 

最后的動作是釋放動作,因為很簡單,這里就不給出代碼了。將這些自定義函數通過界面上的“查看”按鈕聯系起來,整個PE查看器就算是寫完了。  

 

責任編輯:龐桂玉 來源: 計算機與網絡安全
相關推薦

2021-04-30 18:50:44

網絡安全PE編程添加節區

2021-04-26 10:32:38

網絡安全PE編程工具

2021-04-28 14:35:48

網絡安全PE編程代碼

2021-04-19 10:26:41

網絡安全PE文件

2021-04-22 09:35:23

網絡安全PE地址

2021-02-19 09:30:52

網絡安全服務控制管理器代碼

2021-03-03 12:20:42

網絡安全DLL編程

2016-10-10 00:18:27

2021-01-18 10:35:18

網絡安全Windows代碼

2021-03-05 13:46:56

網絡安全遠程線程

2021-01-26 13:45:03

網絡安全Winsock編程

2021-02-23 10:20:07

網絡安全進程代碼

2021-02-21 18:19:43

網絡安全網絡安全編程創建進程

2021-04-14 15:53:58

網絡安全C語言wcslen

2021-03-31 11:35:00

網絡安全OllyDbg分析工具

2021-05-08 11:50:59

網絡安全API函數代碼

2021-03-01 11:20:13

網絡安全多線程代碼

2021-06-18 09:55:09

網絡安全目錄監控

2009-12-07 10:19:16

2021-04-13 11:15:54

網絡安全C語言循環結構
點贊
收藏

51CTO技術棧公眾號

久久人人爽亚洲精品天堂| 欧美日韩中字一区| 九九九伊在人线综合| 国产高清视频在线| 国产酒店精品激情| 奇门遁甲1982国语版免费观看高清| 国产综合视频一区二区三区免费| 丰满岳妇乱一区二区三区| 国产综合久久久久久鬼色| aaa国产一区| 91传媒视频免费| 日韩毛片免费视频一级特黄| 日韩欧美亚洲成人| 国产97在线 | 亚洲| 欧美性色综合| 久久久久久久久爱| 污视频网站免费在线观看| 亚洲欧美日韩一区二区三区在线观看| 亚洲人成人77777线观看| 久久av电影| 日韩美女在线| 日韩欧美精品| 日韩在线中文视频| 在线播放日本| 中文字幕视频一区二区三区久| 亚洲免费久久| 91精品啪在线观看国产81旧版| 最新91在线视频| 亚洲va久久久噜噜噜久久| 亚洲人成在线观看网站高清| 8888四色奇米在线观看| 亚洲综合男人的天堂| 激情网站五月天| 国内精品伊人久久久久av一坑| 999在线免费观看视频| 中文在线综合| 色综合伊人色综合网站| 欧美成人自拍| 欧美一级片免费在线| 欧美黄色a视频| 精品无人码麻豆乱码1区2区| 欧美日韩一区二区在线免费观看| 超碰成人在线免费观看| 亚洲成人av片在线观看| 在线视频中文字幕| 99麻豆久久久国产精品免费| 欧美成人明星100排名| 91香蕉视频mp4| 中文字幕一区二区三区有限公司 | 大桥未久av一区二区三区中文| 国产在线视频欧美一区二区三区| 日韩欧美视频专区| 欧美一级黄色录像片| 另类激情亚洲| 日韩久久精品一区二区三区| 亚洲欧美日韩国产| 欧美大陆一区二区| 爽爽淫人综合网网站| 欧美日韩一区二区三区在线观看免 | 欧美精品在线第一页| 97成人超碰| 三级精品视频久久久久| 狠狠噜噜久久| 免费看国产精品一二区视频| 久久精品主播| 亚洲一区二区三区成人| 五月婷婷激情综合网| 国产91久久久久蜜臀青青天草二| 综合av色偷偷网| 欧美高清你懂的| 欧美日韩综合网| 精品国产乱码久久久久久虫虫漫画| 粉嫩av一区二区| 国产精品爱久久久久久久| 国产欧美高清视频在线| 高清视频在线www色| 日本wwww视频| 欧美精品第一区| 8x8x华人在线| 91片在线免费观看| 黄色免费在线网站| 日韩一区二区影院| 蜜臀av在线| 日韩精品视频免费在线观看| 成人国产激情| 中文字幕av导航| 欧美一区二区三区男人的天堂| 麻豆av在线免费观看| 亚洲一区二区三区久久| 亚洲视频综合| 500福利第一精品导航| 欧美性受xxxx黑人xyx| 秋霞在线午夜| 精品久久久久久亚洲| 男女性色大片免费观看一区二区| 亚洲欧洲久久| 亚洲精品欧美综合四区| 91精品国产品国语在线不卡| 亚洲精品小区久久久久久| 狠狠干在线视频| 在线视频你懂得一区二区三区| 500福利第一精品导航| 久久99热精品这里久久精品| 成人情趣视频网站| 青青草久久网络| 91视频观看免费| 色8久久影院午夜场| 热久久这里只有精品| 国产精品乱人伦| 欧美成人性生活视频| 日韩中文字幕在线看| 日韩理论在线| 天堂√在线中文官网在线| 一本色道久久综合狠狠躁篇的优点 | 91精品视频在线| 老色鬼精品视频在线观看播放| 亚洲欧美国产日韩综合| 欧美日韩亚洲综合一区二区三区| 国产精品激情| 毛片av在线| 亚洲第一精品区| 久久人人爽人人爽爽久久| 国产99精品国产| 欧美日韩欧美| 亚洲欧美日韩网| 免费成人网www| 天堂a中文在线| 久久爱av电影| 综合av第一页| 91精品国产91久久综合| 搞黄视频在线观看| 一区二区不卡在线| 波多野结衣50连登视频| jizz欧美| 男人舔女人下面高潮视频| 91精品国产777在线观看| 久久中文字幕导航| 日韩高清dvd| 中文字幕成人精品久久不卡| 国产精品免费视频观看| 久久中文字幕av| 毛片大全在线观看| 久久综合伊人77777麻豆最新章节| 日韩精品一区二区三区在线| 网红女主播少妇精品视频| 亚洲精品自在在线观看| 精品亚洲男同gayvideo网站| 亚洲情侣在线| www.爱色av.com| 国产suv精品一区二区三区88区| 成人综合在线观看| 亚洲成人一品| a天堂中文在线官网在线| 国产精品视频一区二区高潮| 成人一级片在线观看| 欧美久久综合网| 又色又爽又高潮免费视频国产| 在线成人免费视频| 日韩在线观看| 成人免费图片免费观看| 精品乱色一区二区中文字幕| 这里只有视频精品| 一本一道综合狠狠老| 亚洲影院天堂中文av色| 国产原创在线观看| 国产野外作爱视频播放| 开心色怡人综合网站| 欧美精品一区三区| 91麻豆精品91久久久久同性| 欧美激情1区2区| 一区二区三区性视频| 一区二区av| 国产免费一区视频观看免费| 亚洲图片欧洲图片av| 男人操女人的视频在线观看欧美 | 国产在线不卡| 欧美中文高清| 人体内射精一区二区三区| 精品999在线播放| 鲁大师成人一区二区三区| 国产精品久久久久久久久久白浆| 久久五月精品| 99热在线网站| 国内外成人免费激情视频| 精品国产一区二区三区久久久| 激情成人中文字幕| 久久看人人爽人人| 黄色免费在线看| 成人黄色免费| 国产精品91久久| 亚洲新声在线观看| 欧美一级理论片| 精品久久久国产| 国产精品美女一区二区在线观看| 国产一区在线观看麻豆| 亚洲欧美春色| 亚洲国产裸拍裸体视频在线观看乱了中文 | 秋霞久久久久久一区二区| 国产中文字幕亚洲| 91国产丝袜在线播放|