原创 Windows程序和消息機制(一):窗口程序的創建

Windows下的消息機制 Windows系統是基於事件的操作系統,它的消息機制是最主要的事件之一,所有的窗口程序都是通過消息跟系統進行交互的。 在傳統的C程序中,使用fopen函數打開文件,這個庫函數最終會調用系統函數來打

原创 PE文件格式學習(十四):綁定導入表

1.介紹 綁定導入表的作用是加快程序的啓動速度,一個PE程序在啓動時會去加載導入表中的dll文件,並將導入表的FirstThunk指向的數組填入函數的真實地址,這需要耗去時間,綁定導入表中保存了導入函數的真實地址,所以當PE在啓動時系

原创 常見編碼規範及其應用

概述 對於衆多的編碼規範一直沒有一個清晰的認識,本文旨在理清這些編碼規範的定義和特點。 ASCII ASCII全稱是美國國家信息交換標準碼,它是用於字符轉換的一個標準,長度是7位,可以標記128個不同的字符,但是這個標準極其有限,比如

原创 淺談Windows SDK窗口程序的消息機制

Windows系統的消息機制 一個庫函數(比如fopen),最終會調用操作系統的API來實現其功能,在Windows中,不僅庫函數最終會調用系統函數,系統函數反過來也會調用用戶函數,這種機制就是通過消息來實現的。 我們假設程序發生了一

原创 PE文件格式學習(十二):TLS表

1.介紹 TLS全稱線程局部存儲器,它用來保存變量或回調函數。 TLS裏面的變量和回調函數都在程序入口點(AddressOfEntry)之前執行,也就是說程序在被調試時,還沒有在入口點處斷下來之前,TLS中的變量和回調函數就已經執行完

原创 PE文件格式學習(十三):載入配置表

1.介紹 載入配置表早期是用於描述當PE文件頭或PE可選頭無法描述或者因爲太大而無法描述的各種功能。 後來以XP及以後的系統主要是爲了存儲SEH句柄,稱爲安全結構化異常處理程序列表,如果SEH異常處理沒有經過註冊,在載入配置表中沒有句

原创 PE文件格式學習(十五):導入地址表

導入地址表的內容其實就是導入表中的FirstThunk的內容,本例使用的是PE文件格式學習(十四):綁定導入表一文中的程序,因爲它有綁定導入表,所以它的FirstThunk會被填入導入表中函數的真實地址。

原创 PE文件格式學習(十一 ):全局指針表

在x86與x64系列平臺沒有使用全局指針表,目前只應用於MIPS等平臺上,多用於參數傳遞。

原创 PE文件格式學習(八):基址重定位表

1.簡介 基址重定位表位於數據目錄表中的第六個,它位於安全表的後面。 這個表的作用是用來索引那些需要重定位的數據的。當系統發現DLL的真實加載基址跟PE文件中的ImageBase中的值不一樣時,就會啓用基址重定位表修復一些數據的地址。

原创 PE文件格式學習(二):總體結構

1.概述 PE文件分爲幾個部分,分別是: DOS頭 DOS Stub NT頭(PE頭) 文件頭 可選頭 區段頭(一個數組,每個元素都是一個結構體,稱之爲IMAGE_SECTION_HEADER) .text .rdata .d

原创 PE文件格式學習(七):安全表

1.介紹 如果一個應用程序有數字簽名,那麼它的安全表就不會爲空。它位於異常表的後面。 2.安全表解析 通過數據目錄表裏提供的RVA,我們轉換成offset,找到了安全表的位置,如下: 安全表的結構體如下: typedef struc

原创 PE文件格式學習(九):調試表

微軟官方參考文檔:https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#debug-type