Fasm—Win32彙編學習1

來源:互聯網
上載者:User

   Fasm---Win32彙編學習1

    今天就由我來帶領大家進入win32彙編學習的殿堂。我們以後採用的編譯器是Fasm, 因為我比較偏向Fasm,其一它是開源的,我們可以自己通過學習Fasm的原始碼來學習,且它的區段可以完全自己構建這使我們可以更加的深入對PE結構的掌握等。所以我比較推薦Fasm,當然你用其他的編譯器也是可以的。。。 看個人愛好吧。。但是有必要說下,國內fasm使用甚少,大多人都喜歡使用masm,所以fasm的資料也是相當匱乏,所以大家可以選擇任意的編譯器。

   首先介紹下FASM書寫的格式

 

    format  PE   子系統    子系統版本號碼

    entry  進入點

   

    section   '節名'   可用標誌    節屬性

   

    section   '節名'   可用標誌    節屬性

    format偽指令是用來指定輸出的檔案格式。。後面跟PE指定輸出PE檔案格式,當然也可以輸出Win16下的MZ檔案格式。不過既然我們講的Win32彙編,所以以後都採用的是PE檔案格式。。 ∩∩ ..   好,後面子系統標示我們輸出的檔案的子系統值。子系統值標示我們程式被載入時候按照何種方式運行。因為我們映像檔案(也就是磁碟檔案)在被映射到記憶體的時候,PE Loader會讀取我們PE結構上相應的子系統值來通知何種子系統(也就是我們的程式運行在何種子系統環境下)。 我們一般編寫的程式用到3種子系統。“console”控制台,“GUI”可視化圖形程式 , “native” 驅動程式。好接下來是我們的子系統版本號碼,這裡大家可以自己設定指定版本號碼。

   entry是用來指定我們的程式的進入點。就是程式從哪裡開始執行(也就是初始化我們EIP寄存器的值),一般entry 後面跟的是我們的標號名稱。

   好接下來是我們用section偽指令來定義節。 格式是

   section   '節名'   可用標誌    節屬性 

   節名可以任意設定,只要不超過8個位元組即可。。   可用標誌這裡有“code”, “data”, “import”, "export"等。節屬性也是相應的可用標誌

"readable", "writeable","executable", "shareable", "discardable","notpageable" 。

  

 

理論:

    Win32程式運行在保護模式下,保護模式可以追溯到80286時代,但是而今80286已經過時。現在我們的經曆放在80386以及後續的X86 系列的CPU上。 Windows把每一個Windows程式放到分開的虛擬位址空間中運行。也就是說每一個程式都擁有相互獨立的4GB地址空間。也就是說他們的定址可達4GB的範圍。程式在啟動並執行時候作業系統會完成4GB的虛擬位址到物理地址的轉換,這也要求我們編寫程式必須恪守Windows的相關規定,否則極其容易發生記憶體的保護模式錯誤。。

    而Win32程式只有一種記憶體模式也就是“平坦”記憶體模式,所有的Win32程式運行在一個用程式運行在一個連續、平坦、巨大的 4GB 的空間中。這同時也意味著您無須和段寄存器打交道,您可以用任意的段寄存器定址任意的地址空間,這對於程式員來說是非常方便的,這也使得用32位組合語言和用C語言一樣方便。在Win32下編程,有許多重要的規則需要遵守。有一條很重要的是:Windows 在內部頻繁使用 ESI,EDI,EBP,EBX 寄存器,而且並不去檢測這些寄存器的值是否被更改,這樣當您要使用這些寄存器時必須先儲存它們的值,待用完後再恢複它們,一個最顯著的應用例子就是 Windows 的 CallBack 函數中。 。

 

參考書籍:《Iczelion的Win32彙編教程》   對此表示由衷的感謝。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.