成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

網絡安全編程:PE編程實例之查殼工具

安全
對于PE可執行文件來說,為了保護可執行文件或者是壓縮可執行文件,通常會對該文件進行加殼。接觸過軟件破解的人應該都清楚殼的概念。下面來寫一個查殼的工具。

 [[395859]]

PE文件結構中大多用的是偏移地址,因此,只要偏移地址和實際的數據相符,那么PE文件格式有可能是嵌套的。也就是說,PE文件是可以變形的,只要保證其偏移地址和PE文件格式的結構基本就沒多大問題。

對于PE可執行文件來說,為了保護可執行文件或者是壓縮可執行文件,通常會對該文件進行加殼。接觸過軟件破解的人應該都清楚殼的概念。下面來寫一個查殼的工具。

首先,用ASPack給前面寫的程序加個殼。打開ASPack加殼工具,如圖1所示。

圖1  ASPack加殼工具界面

對測試用的軟件進行一次加殼,不過在加殼前先用PEiD查看一下,如圖2所示。

圖2  PEiD查殼

從圖2可以看出,該程序是Visual C++ 5.0 Debug版的程序。其實該程序是用Visual C++ 6.0寫的,這里是PEiD識別有誤。不過只要用Visual C++ 6.0進行編譯選擇Release版時,PEiD是可以正確進行識別的。使用ASPack對該程序進行加殼,然后用PEiD查殼,如圖3所示。

圖3  用PEiD查看加殼后的文件

從圖3中可以看出,PEiD識別出文件被加過殼,且是用ASPack進行加殼的。PEiD如何識別程序被加殼,以及加了哪種殼呢?在PEiD的目錄下有一個特征碼文件,名為“userdb.txt”。打開這個文件,看大概內容就能知道里邊保存了殼的特征碼。程序員的任務就是自己實現一個這個殼的識別工具。

殼的識別是通過特征碼進行的,特征碼的提取通常是選擇文件的入口處。殼會修改程序的入口處,因此對于殼的特征碼來說,選擇入口處比較合適。這里的工具主要是用來學習和演示用的,因此寫的查殼工具要能識別兩種類型,第一種類型是可以識別用Visual C++ 6.0編譯出來的文件,第二種類型是可以識別ASPack加殼后的程序。當然,ASPack加殼工具的版本眾多,這里只要能識別上面所演示版本的ASPack就可以了。

如何提取特征碼呢?程序無論是在磁盤上還是在內存中,都是以二進制的形式存在的。特征碼是從程序的入口處進行提取的,那么可以使用C32Asm以十六進制的形式打開這些文件,在入口處提取特征碼,也可以用OD將程序載入內存后提取特征碼。這里選擇使用OD提取特征碼。用OD載入未加殼的程序,如圖4所示。

圖4  OD載入為加殼文件的入口處

可以看到,這就是未加殼程序的入口處代碼。在圖4中,“HEX數據”列中就是代碼對應的十六進制編碼,這里要做的就是提取這些十六進制編碼。提取結果如下: 

  1. "\x55\x8B\xEC\x6A\xFF\x68\x00\x65\x41\x00" \  
  2. "\x68\xE8\x2D\x40\x00\x64\xA1\x00\x00\x00" \  
  3. "\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83" \  
  4. "\xC4\x94"  

根據這個步驟,把ASPack的特征碼也提取出來,提取結果如下: 

  1. "\x60\xE8\x03\x00\x00\x00\xE9\xEB\x04\x5D" \  
  2. "\x45\x55\xC3\xE8\x01\x00\x00\x00\xEB\x5D" \  
  3. "\xBB\xED\xFF\xFF\xFF\x03\xDD\x81\xEB\x00"  
  4. "\xC0\x01"  

有了這些特征碼,就可以開始編程了。先來定義一個數據結構,用來保存特征碼,該結構如下: 

  1. #define NAMELEN 20 
  2. #define SIGNLEN 32  
  3. typedef struct _SIGN  
  4.  
  5.  char szName[NAMELEN];  
  6.  BYTE bSign[SIGNLEN + 1];  
  7. }SIGN, *PSIGN; 

利用該數據結構定義2個保存特征碼的全局變量,具體如下: 

  1. SIGN Sign[2] =  
  2.  
  3.   {  
  4.     // VC6  
  5.     "VC6",  
  6.     "\x55\x8B\xEC\x6A\xFF\x68\x00\x65\x41\x00" \  
  7.     "\x68\xE8\x2D\x40\x00\x64\xA1\x00\x00\x00" \  
  8.     "\x00\x50\x64\x89\x25\x00\x00\x00\x00\x83" \  
  9.     "\xC4\x94"  
  10.   },  
  11.   {  
  12.     // ASPACK  
  13.     "ASPACK",  
  14.     "\x60\xE8\x03\x00\x00\x00\xE9\xEB\x04\x5D" \  
  15.     "\x45\x55\xC3\xE8\x01\x00\x00\x00\xEB\x5D" \  
  16.     "\xBB\xED\xFF\xFF\xFF\x03\xDD\x81\xEB\x00" 
  17.     "\xC0\x01"  
  18.   }};  

程序界面是在PE查看器的基礎上完成的,如圖5所示。

圖5  查殼程序結果

提取特征碼后,查殼工作只剩特征碼匹配了。這非常簡單,只要用文件的入口處代碼和特征碼進行匹配,匹配相同就會給出相應的信息。查殼的代碼如下: 

  1. VOID CPeParseDlg::GetPeInfo()  
  2.  
  3.   PBYTE pSign = NULL 
  4.   // 定位文件入口位置  
  5.   pSign = (PBYTE)((DWORD)m_lpBase  
  6.     + m_pNtHdr->OptionalHeader.AddressOfEntryPoint);  
  7.   // 比較入口特征碼  
  8.   if ( memcmp(Sign[0].bSign, pSign, SIGNLEN) == 0 )  
  9.   {  
  10.     SetDlgItemText(IDC_EDIT_PEINFO, Sign[0].szName);  
  11.   }  
  12.   else if ( memcmp(Sign[1].bSign, pSign, SIGNLEN) == 0 )  
  13.   {  
  14.     SetDlgItemText(IDC_EDIT_PEINFO, Sign[1].szName);  
  15.   } 
  16.   else  
  17.   {  
  18.   SetDlgItemText(IDC_EDIT_PEINFO, "未知");  
  19.   } 

這樣,查殼程序的功能就完成了。在程序中提取的特征碼的長度為32字節,由于這里只是一個簡單的例子,大家在提取特征碼的時候,為了提高準確率,需要多進行一些測試。 

 

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

2021-04-25 21:25:09

網絡安全網絡安全編程PE編程

2021-04-30 18:50:44

網絡安全PE編程添加節區

2021-04-28 14:35:48

網絡安全PE編程代碼

2021-04-19 10:26:41

網絡安全PE文件

2021-03-03 12:20:42

網絡安全DLL編程

2021-06-18 09:55:09

網絡安全目錄監控

2016-10-10 00:18:27

2021-03-31 11:35:00

網絡安全OllyDbg分析工具

2021-01-18 10:35:18

網絡安全Windows代碼

2021-03-05 13:46:56

網絡安全遠程線程

2021-01-26 13:45:03

網絡安全Winsock編程

2021-04-22 09:35:23

網絡安全PE地址

2021-06-11 13:40:17

網絡安全專殺工具病毒

2021-02-19 09:30:52

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

2021-02-21 18:19:43

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

2021-02-23 10:20:07

網絡安全進程代碼

2021-05-08 11:50:59

網絡安全API函數代碼

2021-04-14 15:53:58

網絡安全C語言wcslen

2021-03-01 11:20:13

網絡安全多線程代碼

2021-05-14 12:10:19

網絡安全KeyMake注冊機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品区二区三区日本 | 亚洲精品久久久久久久不卡四虎 | 亚洲欧美日韩电影 | 国产精品久久精品 | 日本一区视频在线观看 | 日韩精品1区2区 | 五月婷婷激情网 | 天天射天天干 | 久久久久91 | 久久与欧美 | 国产精品一区二区三区四区 | 亚洲国产精品99久久久久久久久 | 久久久久久亚洲欧洲 | 麻豆久久久9性大片 | 久久久精品国产 | 亚洲精品一区二区三区 | 久久精品一 | av中文在线| 欧美日韩免费一区二区三区 | 亚洲一区二区久久久 | 午夜一区二区三区在线观看 | 亚洲欧美一区二区三区情侣bbw | 狠狠躁躁夜夜躁波多野结依 | 成人免费在线观看 | 成人在线免费网站 | 欧美成视频 | 伊人精品 | www.日韩 | 成人在线精品视频 | 最新91在线| 黄色一级大片在线免费看产 | 一级片免费视频 | 久久99精品久久久久久 | 国产久 | 亚洲精品一区二区三区在线观看 | 亚洲一区中文字幕 | 亚洲精品久久久一区二区三区 | 91精品久久久久久久 | 一区二区三区av | 成人午夜av | 中文字幕在线二区 |