加密與解密學習筆記4 Windows訊息機制

2022-09-12 15:12:19 字數 2485 閱讀 9074

windows是乙個訊息(message)驅動式系統,windows訊息提**用程式與應用程式之間、應用程式與windows系統間進行通訊的手段。應用程式實現的功能由訊息來觸發,並且靠對訊息的響應和處理來完成。

windows系統有2種訊息佇列:

1、系統訊息佇列

2、應用程式訊息佇列

計算機說有輸入裝置有windows監控,

乙個事件發生,需經過如下過程:

1、windows現將輸入的訊息放入系統訊息佇列

2、再將輸入的訊息拷貝到相應的應用程式佇列

3、應用程式中的訊息迴圈從它的訊息佇列中檢索每個訊息並且傳送給相應的視窗函式中

注意:訊息的非搶先性,不論事件的急與緩,總共是按照到達的先後排隊(一些系統訊息除外),造成外部實時事件可能得不到及時處理。

windows本身由訊息驅動,所以除錯程式時跟蹤乙個訊息會得到相當底層的答案。

windows訊息函式

1、sendmessage函式

呼叫乙個視窗的函式,將一條訊息傳送給那個視窗,除非訊息處理完畢,否則該函式不會返回

lresult sendmessage(

hwnd hwnd, //目的視窗的控制代碼

uint msg, //訊息識別符號

wparam wparam, //訊息的wparam域

lparam lparam); //訊息的lparam域

返回值:由具體的訊息決定

2、postmessage函式

將訊息投遞到指定視窗的訊息佇列。投遞的訊息會在windows時間處理過程中處理,會隨同投遞的訊息呼叫指定的視窗於的視窗函式,適合不需要立即處理的視窗訊息傳送。

bool postmessage(

hwnd hwnd, //目的視窗的控制代碼

uint msg, //訊息識別符號

wparam wparam, //訊息的wparam域

lparam lparam //訊息的lparam域

);返回值:如訊息投遞成功,則返回true(非零)

3、wm_command函式

當使用者從選單或按鈕中選擇一條命令或者乙個控制項時傳送給它的父視窗,或者當乙個快捷鍵被釋放時傳送。(wm_command產生的條件:點選選單, 點選加速鍵,點選子視窗按鈕,點選工具欄按鈕。這些時候都有command訊息產生。)visual c++的winuser.**件裡定義了wm_command訊息對應的十六進製制是0x0111。

wm_command

wnotifycode = hiword(wparam); //通告**

wid = loword(wparam); //選單條目、控制項或快捷鍵的識別符號

hwndctl = (hwnd)lparam; //控制項控制代碼

返回值:如果應用程式處理這條訊息,返回值為零

4、wm_destroy訊息

當乙個視窗被破壞時傳送。wm_destroy訊息的十六進製制是0x0002

這條訊息無引數

返回值:如果應用程式處理這條訊息,返回值為零

5、wm_gettext訊息

應用程式傳送一條wm_gettext訊息,拷貝乙個對應視窗的文字到乙個呼叫程式提供的緩衝區。wm_gettext訊息的十六進製制是0x000d

wm_gettext

wparam=(wparam)cchtextmax; //需要拷貝的字元數

lparam=(lparam)lpsztext; //接收文字的緩衝區位址

返回值:被拷貝的字元數

6、wm_lbuttondown訊息

當游標在乙個視窗的客戶區並且使用者按下滑鼠左鍵,wm_lbuttondown訊息被傳送。如果滑鼠動作未**獲,這條訊息傳送給游標下的視窗;否則,被傳送給已經捕獲滑鼠動作的視窗。wm_lbuttondown訊息訊息的十六進製制是0x0201

wm_lbuttondown

fwkeys=wparam; //key旗標

xpos=loword(lparam); //游標的水平位置

ypos=hiword(lparam); //游標的垂直位置

返回值:如果應用程式處理這條訊息,返回值為零

7、wm_lbuttonup訊息

當游標在乙個視窗的客戶區並且使用者按下滑鼠左鍵,wm_lbuttonup訊息被傳送。如果滑鼠動作未**獲,這條訊息傳送給游標下的視窗;否則,被傳送給已經捕獲滑鼠動作的視窗。wm_lbuttonup訊息訊息的十六進製制是0x0202

wm_lbuttonup

fwkeys=wparam; //key旗標

xpos=loword(lparam); //游標的水平位置

ypos=hiword(lparam); //游標的垂直位置

返回值:如果應用程式處理這條訊息,返回值為零

8、wm_quit訊息

當應用程式呼叫postquitmessage函式時,生成訊息wm_quit;

wm_quit訊息的十六進製制是0x0012

wm_quit

nexitcode=(int)wparam; //退出**

返回值:這條訊息沒有返回值

《加密與解密》筆記(二)

9.2.3 il以元資料為操作物件,同時本身的執行又收到元資料的限定,元資料在 il中通過 token 引用和定位,token 是元資料項的唯一標識 從pe結構看,簽名 signature 就是在儲存在 blob 中的一段二進位制資料,作用是描述特定元資料的性質 9.4.1強名稱 net提供了一種驗...

《加密與解密》筆記五(二)

筆記內出現的api都是沒有加上引數的,細節需要去msdn檢視 相關api這裡對上面筆記的做一些補充 findfirstfile 確定檔案存在性的 createfile lopen 確定檔案存在性並獲得控制代碼對其操作 getfilesize 確定檔案的大小 getfileattributes 獲得檔...

如何學習加密與解密技術

段鋼 很多人都想學習解密,這東西剛入門時會讓人沉迷進去,可以飯不吃 覺不睡。出現這種現像,也許是解密滿足了人們的獵奇心裡吧。但掌握這方面技術,對自身的提高確實有好處。可以通過跟蹤軟體,提高自己的除錯技能,並且能了解他人程式思路,使自己寫出更好的程式。研究解密技術有助於掌握一些系統底層知識,系統底層知...