程序員尤其 windows 程序員會經常說“下個鉤子”,小編還是一名學生的時候,對說出這個短語的人真是崇拜至極。

這么多年過去了,小編還會不經意間蹦出這幾個字,即使已經了解這是一名程序員的基本功,說起來依然覺得有范兒。鉤子來源于英文詞hook。在Windows系統中一切皆消息,按鍵盤上的鍵,也是一個消息。Hook 的意思是鉤住,也就是在消息過去之前,先把消息鉤住,不讓其傳遞,使用戶可以優先處理。執行這種操作的函數也稱為鉤子函數。簡單地講,就是“要想從這過,留下買路財”。
要去公共廁所,必須先經過公廁門口老爺爺的收費允許,老爺爺就是在下“鉤子”,這個鉤子函數的功能是付款。回到工作過程中,程序員在討論時也常說“可以先鉤住再處理”,即執行某操作之前,優先處理一下,再決定后面的執行走向。
有一些技術是利用鉤子的,比如一些程序經常會校驗自身簽名,不允許他人改動程序安裝包,這時如果鉤住校驗的函數,假裝處理為校驗通過(其實沒有通過,因為鉤子能優先處理并返回,所以執行不到原始的代碼了),這種情況下就欺騙了原始程序,從而達到目的。

以上就是鉤子的思想和原理,希望以后在和程序員交流的過程中,聽到這個詞時,讀者也能夠自信地對程序員點點頭。