黑客逆向破解基礎-2:程序通常是由什麼語言編寫的

一個程序從編譯出來的時候一般都是沒有殼的,不同編譯器編譯出的無殼程序也是不相同的,認識了不同編譯器編譯出來的無殼的程序,再去看無殼程序被加殼程序加殼後的樣子就輕鬆很多,經過對比從而瞭解不同語言無殼程序和加殼後程序的特徵是什麼,特徵主要從“入口點代碼”、“程序區段”和“加載模塊”等信息來確定。

從目前國內接觸到程序看,比較流行的編譯器有:VC系列、易語言、.NET、Delphi,一些曾經用的很多但漸漸少了有:VB、ASM、BC++,還有一些用的比較少的有:AutoIt、PB、QT等,下面提供一些由論壇同學編譯出來的試煉品,結合實例來看看“入口點代碼”、“程序區段”和“加載模塊”等特徵。

常見的一些程序的特徵

1.VC6編譯無殼程序
入口點代碼是固定的代碼,入口調用的API也是相同的,其中有的push地址不同程序可能不同;區段有四個也是固定的.text、.rdata、.data和.rsrc。

PEID查看區段如下:
在這裏插入圖片描述
OllyDbg查看入口點代碼如下:
在這裏插入圖片描述
2.VS2008和VS2013編譯無殼程序
入口點只有兩行代碼,一個CALL後直接JMP,第一個CALL進去後調用的API也是相同的;區段相對於VC6多了一個.reloc。

PEID查看區段如下:
在這裏插入圖片描述
OllyDbg查看入口點代碼如下:
在這裏插入圖片描述
在這裏插入圖片描述

3.易語言編譯無殼程序
(1) 由於易語言獨立編譯是調用VC的鏈接程序編譯的,所以從區段和入口代碼特徵和VC相同;
(2) 非獨立編譯比較容易識別,入口特徵和模塊特徵都有krnln.fnr。

易語言特點:可以從程序裏找一些call的調用最終都會走到上面核心代碼圖位置(文字不太好表達),這個方法可以區分和VC的區別。

下面爲易語言非獨立編譯帶運行庫:

OllyDbg查看入口點代碼如下:
在這裏插入圖片描述
查看模塊:
在這裏插入圖片描述
查看核心代碼:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章