1. 程式人生 > 其它 >C/C++ PeView 結構解析器 [首發]

C/C++ PeView 結構解析器 [首發]

前段時間推出過一款PETools命令列版本的PE檔案解析器,由於命令列引數較多且每次輸出檔案都要重新讀取一遍效率較低,故今天我終於抽出時間來繼續完善這個小工具,由於PETools工具與其他工具重名,故本次更名為PEView,且使用了互動式結構解析,讓解析結果更加清晰,在使用上更加的易用,同時預設支援上下箭頭查詢歷史命令,非常方便。

市面上幾乎所有的PE檔案檢視工具都是圖形化介面的,本工具不會採用圖形介面模式,一是因為本人對圖形開發不太熟悉,二是可以彰顯與眾不同,目前只有32位,64位正在開發中。

本次更新主要大變動並不算多,主要是對命令列的完善,移除幾個不太實用的功能,同時也增加了幾個實用功能,如下是具體的命令引數。

啟動

PEView相對於PETools來說不在使用傳入檔案路徑的方式開啟檔案,而是使用Open一次性開啟檔案,只有開啟後才可以對其進行其他操作,開啟檔案需要使用Open命令跟隨路徑。

當檔案被開啟時,其實就是建立了一個記憶體對映,此時我們就可以執行一些查詢命令了,例如查詢Dos,NT頭資料,可以這樣。

查詢資料目錄表【DataDirectory】,執行如下命令。

查詢,【Section】本程式的節表。

匯入表查詢有多個命令,【ImportAll】用於查詢所有匯入過的模組以及該模組的匯入函式。

【ImportDll】命令用於查詢該程式匯入了那些DLL檔案,可用來確定範圍。

【ImportByName】命令用於查詢,查詢指定匯入表中匯入過的函式

【ImportByFunction】該命令可用於驗證,指定的程式中是否引入了指定函式

【Export】用於查詢程式中的匯出表,由於只有DLL存在匯出表,所有我們需要先切換到DLL檔案上,然後在查詢。

【FixRelocPage】用於顯示重定位分頁情況。

【FixRelocRVA】有了分頁情況,就可以使用FixRelocRVA --rva 00002000查詢該頁內具有的頁。

【Resource】則用於顯示當前程式的資源表。

【Fingerprint】使用者檢查特定程式使用了那種編譯器編譯,由於這裡特徵不多所以暫時並不是那麼好。

【GetProcAddr】用於驗證,所在程式中,特定模組中的記憶體地址。

【CheckSelf】用於檢查被開啟程式開啟的保護模式。

【GetHexAscii】這是一個獨立模組,可以獨立使用,通常傳入的是檔案路勁,檔案偏移,以及讀取大小,即可實現檔案的十六進位制讀取展示。

剩下的就是一些小功能了。

【add/sub】簡單的十六進位制計算器。

【VaToFoa / RvaToFoa / FoaToVa 】將虛擬地址轉為實際地址,等基本轉換。

文章出處:https://www.cnblogs.com/lyshark
許可協議: 文章中的程式碼均為學習時整理的筆記,部落格中除去明確標註有參考文獻的文章,其他文章【均為原創】作品,轉載請務必【添加出處】,您添加出處是我創作的動力!

防惡意轉載:如果發現您在轉載時,沒有新增本人部落格連結,本人將批量爬取您部落格中所有內容,打上本人原創版權水印,並進行二次發行,請相互尊重,你尊重我的勞動成果,我才會尊重你。