Linux 的簡單鉤子

2021-07-15 02:08:12 字數 964 閱讀 2602

在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...