遊戲注入教程(三) Hook攔截系統Api

2021-07-15 22:54:09 字數 1803 閱讀 1680

一、新建乙個用於攔截的mfc的dll,**如下:

//不同instance共享的該變數hinst

#pragma data_seg("shared")

static hinstance hinst = null; //本dll的例項控制代碼 (injectdll.dll)

#pragma data_seg()

#pragma comment(linker, "/section:shared,rws")

handle hprocess = null; //所處程序的控制代碼

bool bhook = false; //是否hook了函式

bool inject_status = false; //是否對api進行了hook

byte oldcode[5]; //老的系統api入口**

byte newcode[5]; //要跳轉的api** (jmp ***x)

中的messagebox函式定義

typedef int (winapi *mymsg)(hwnd hwnd, lpctstr lptext, lpctstr lpcaption, uint utype);

mymsg m_msg; 中的messagebox函式

farproc pf_msg; //指向messagebox函式的遠指標

void hookon(); //開啟鉤子,切換成自己的函式入口位址

void hookoff(); //關閉鉤子,切換成系統的函式入口位址

void getentryaddr();//獲取新舊函式的入口位址

//我們定義的新的mymessagebox()函式

int winapi mymessagebox(hwnd hwnd, lpctstr lptext, lpctstr lpcaption, uint utype);

void getentryaddr()

newcode[0] = 0xe9;//第乙個位元組0xe9相當於jmp指令

//獲取mymessagebox()的相對位址

_asm

}}void hookon()

//將所屬程序中messagebox()的入口**恢復

void hookoff()

int winapi mymessagebox(hwnd hwnd, lpctstr lptext, lpctstr lpcaption, uint utype)

二、新建乙個exe程式,呼叫上面的dll,對本程式進行hook,攔截messagebox

hmodule hm = ::loadlibrarya("d:\\injectdll.dll");

typedef void(*funchookon)();

funchookon hookon = (funchookon)getprocaddress(hm, "hookon");

hookon();

三、解除安裝hook這種攔截行為

hmodule hm = ::loadlibrarya("d:\\injectdll.dll");

typedef void(*funchookoff)();

funchookoff hookoff = (funchookoff)getprocaddress(hm, "hookoff");

hookoff();

四、結合注入的部分,簡單陳述下,如何注入後攔截

把以上dll程式寫在前兩章的待注入的dll中,通過傳送鍵盤訊息來開啟或者關閉hook,還是比較簡單的。

新or注入教程

記得一年前火狐有一位朋友問,如果乙個站過濾了and和 的話,改怎麼注入啊?當時我隨口說了句 or注入 後來又一次看貼的時候,看到他問我該怎麼利用呢?我就寫了幾個簡單的語句給他,叫他自己變換,他很感激我,還說網上沒有這種方法。我到網上查了查,還真沒有or注入專題呢 or 1 1除外 呵呵,所以,一年後...

SQLmap注入教程

一次sqlmap注入點並且dump出賬號密碼全程 判斷注入點 sqlmap.py u 存在注入url 爆出所有資料庫名字 sqlmap.py u 存在注入url dbs 檢視當前使用賬號 sqlmap.py u 存在注入url current user 1 檢視當前資料庫 sqlmap.py u 存...

程式注入教程集合

遠端執行緒注入dll 遠執行緒注入原理是利用windows 系統中createremotethread 這個api,其中第4個引數是準備執行的執行緒,我們可以將loadlibrary 填入其中,這樣就可以執行遠端程序中的loadlibrary 函式,進而將我們自己準備的dll載入到遠端程序空間中執行...