各種區塊的描述
很多朋友喜歡聽小甲魚的pe詳解,因為他們覺得課堂上老師講解的都是略略帶過,繞得大家雲裡霧裡剛好小甲魚文采也沒課堂上的教授講的那麼好,只能以比較通俗的話語來給大家描述
通常,區塊中的資料在邏輯上是關聯的。
pe檔案一般至少都會有兩個區塊:乙個是**塊,另乙個是資料塊。每乙個區塊都需要有乙個截然不同的名字,這個名字主要是用來表達區塊的用途。例如有乙個區塊叫.rdata,表明他是乙個唯讀區塊。注意:區塊在映像中是按起始位址(rva)來排列的,而不是按字母表順序。
另外,使用區塊名字只是人們為了認識和程式設計的方便,而對作業系統來說這些是無關緊要的。微軟給這些區塊取了個有特色的名字,但這不是必須的。當程式設計從pe檔案中讀取需要的內容時,如輸入表、輸出表,不能以區塊名字作為參考,正確的方法是按照資料目錄表中的字段來進行定位。
下表中的區塊名稱以及意義:
當然我們在visual c++ 中也可以自己命名我們的區塊,用#pragma來宣告,告訴編譯器插入資料到乙個區塊內,格式如下:
#pragma data_msg( "fc_data" )
大家還記得吧,#為巨集處理符號,啥是巨集?簡單的說就是編譯器的時候由編譯器直接先進行翻譯。或許說按照指定的格式機械替換。嘻嘻,學破解要懂程式設計吶~
以上語句告訴編譯器將資料都放進乙個叫「fc_data」 的區塊內,而不是預設的.data 區塊。區塊一般是從obj
檔案開始,被編譯器放置的。鏈結器的工作就是合併左右obj和庫中需要的塊,使其成為乙個最終合適的區塊。鏈結器會遵循一套相當完整的規則,它會判斷哪些區塊將被合併以及如何被合併。
rva 和檔案偏移的轉換
在前邊我們**過rva 這個詞,但對於初次接觸pe檔案的朋友來說,顯得尤其陌生和無奈。中國人不喜歡老外的縮寫,但總要著接受……不過,在有了前邊知識的鋪墊之後,現在來談這個概念大傢伙應該能夠得心應手了。起碼不用顯得那麼的費解和無奈~
如何換算 rva 和檔案偏移呢?
當處理pe檔案時候,任何的 rva 必須經過到檔案偏移的換算,才能用來定位並訪問檔案中的資料,但換算卻無法用乙個簡單的公式來完成,事實上,唯一可用的方法就是最土最笨的方法:
區塊鏈基礎知識 6 區塊鏈分叉
位元幣採用p2p網路架構,網路中每乙個節點彼此平等,共同提供網路服務。p2p網路的工作機制,包括節點分類 節點發現 節點連線和廣播等,客戶端會維護乙個列表,裡面列出了一些 長期穩定執行 的節點,這樣的節點稱為 種子節點 新的客戶端可以通過種子節點來快速發現網路中的其它節點。區塊鏈分叉 原因 a b兩...
5 5 區塊索引
超級賬本提供多種區塊索引 block index 方式,以便能夠快速找到區塊。這些方式包括 區塊編號 區塊雜湊 交易編號 同時按區塊編號和交易編號 加 入 會 員 微 信 dedao555 區塊交易編號 交易驗證碼。5.5.1 檔案位置指標 索引的內容是檔案位置指標 file location po...
5 5 區塊索引
超級賬本提供多種區塊索引 block index 方式,以便能夠快速找到區塊。這些方式包括 區塊編號 區塊雜湊 交易編號 同時按區塊編號和交易編號 加 入 會 員 微 信 dedao555 區塊交易編號 交易驗證碼。5.5.1 檔案位置指標 索引的內容是檔案位置指標 file location po...