、
在windows的遊戲外掛程式開發上,鉤子(hook)是乙個很常見的技術。這裡我們不想討論鉤子是什麼意思和在windows上是如何實現的,只是來簡單地學習一下linux的鉤子。
首先來確定乙個函式,要乙個沒有多大危害的,那就先試試 time()。
我們寫乙個與time同名的函式:
注意:time()為linux的系統函式
hook.c
----------------------------
#include
long time(void*unused)
----------------------------
這裡我們用不著管他到底是什麼引數,只要每個引數和原來引數的長度匹配即可。
(ps:最可惡的是將read和write給hook了!!)
好吧,再來寫乙個測試程式(這個程式很無辜,他不知道time已經被hook了)
test.c
----------------------------
#include
#include
int main()
----------------------------
現在就是見證奇蹟的時刻
編譯c99 -o hook.so hook.c -fpic --shared#編譯為共享庫
c99 -otesttest.c
編譯####################
./test
1310443885
####################
ld_preload=~/hook.so ./time
hook!
1234567
無辜的time就這樣被……
更高階的hook:使用awk或sed在$shell + rc檔案裡面尋找有沒有ld_preload,沒有就設定,這樣所有的程式都被hook了。。。
最簡單的Windows Hook(鉤子)介紹
hook是windows作業系統的訊息傳遞機制的重要組成部分。通過使用hook,程式可以監視系統中其他程序的訊息傳遞,並在該訊息到達目的前對其進行處理。注意,由於hook可能訪問其他程序的位址空間,故必要時應通過dll實現。並且,全域性hook會降低系統的效能,應該盡量避免使用。windows為不同...
寫了個簡單的內聯API鉤子類
class capihook bool initial lpvoid lpoldprocaddr,lpvoid lpnewprocaddr m lpoldprocaddr lpoldprocaddr m lpnewprocaddr lpnewprocaddr ifdef win64 m szjmpc...
mysql 鉤子 svn鉤子的使用案例
svn鉤子的使用案例 我在這一篇博文中提到,svn鉤子指令碼是svn非常實用重要的功能,在工作中,會經常需要用到svn鉤子指令碼以實現除了svn自帶功能之外的附加功能,那麼這一篇博文,我們就舉例演示一下,svn鉤子是用來做什麼的,以及怎麼用。svn鉤子的功能 svn鉤子是乙個指令碼,它的具體寫法和l...