日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)

發(fā)布時(shí)間:2025/3/15 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

劫持

detours

實(shí)現(xiàn)劫持

步驟:

1. 安裝Detours

2. 編譯Detours工程

3. 把靜態(tài)庫(kù)和頭文件引入工程

4. 函數(shù)指針與函數(shù)的定義

5.攔截

劫持QQ

實(shí)現(xiàn)劫持system函數(shù)。

1. 設(shè)置項(xiàng)目生成dll

2. 源文件(注意:需要保存為.c文件,或者加上extern C,因?yàn)閐etours是使用C語(yǔ)言實(shí)現(xiàn)的,表示代碼使用C的規(guī)則進(jìn)行編譯)?

3. 生成"劫持1.dll"文件

4. 把dll注入到QQ.exe

5. 攔截QQ執(zhí)行system函數(shù)

參考


劫持

  • 劫持的原理就是把目標(biāo)函數(shù)的指針的指向修改為自定義函數(shù)的地址。
  • 函數(shù)是放在內(nèi)存中的代碼區(qū),所以劫持與代碼區(qū)密切相關(guān)。
  • 實(shí)現(xiàn)劫持需要使用detours。

detours

  • detours是微軟亞洲研究院出口的信息安全產(chǎn)品,主要用于劫持。這個(gè)工具使用C語(yǔ)言實(shí)現(xiàn),所以是跨平臺(tái)的。
  • detours根據(jù)函數(shù)指針改變函數(shù)的行為,可以攔截任何函數(shù),即使操作系統(tǒng)函數(shù)。

detours下載地址:
下載地址1: http://research.microsoft.com/en-us/downloads/d36340fb-4d3c-4ddd-bf5b-1db25d03713d/default.aspx
下載地址2: http://pan.baidu.com/s/1eQEijtS

實(shí)現(xiàn)劫持

開(kāi)發(fā)環(huán)境說(shuō)明:win7、vs2012

步驟:

1. 安裝Detours

2. 編譯Detours工程

在安裝目錄C:\Program Files\Microsoft Research\Detours Express 3.0\src目錄下的是工程的源文件。

????????(1) 打開(kāi)VS2012命令行工具,進(jìn)入src目錄。

????????(2) 使用nmake(linux下是make)命令編譯生成靜態(tài)庫(kù)。

?????????(3) 在lib.x86目錄下的.lib文件是win32平臺(tái)下的靜態(tài)庫(kù)文件

?????????(4) 在include目錄下的是Detours工程的頭文件

3. 把靜態(tài)庫(kù)和頭文件引入工程

// 引入detours頭文件 #include "detours.h"// 引入detours.lib靜態(tài)庫(kù) #pragma comment(lib,"detours.lib")

4. 函數(shù)指針與函數(shù)的定義

????????(1) 定義一個(gè)函數(shù)指針指向目標(biāo)函數(shù),這里目標(biāo)函數(shù)是system

????????例如:

????????detour在realse模式生效(因?yàn)閂S在Debug模式下已經(jīng)把程序中的函數(shù)劫持了)

static int ( *oldsystem)(const char * _Command) = system;//定義一個(gè)函數(shù)指針指向目標(biāo)函數(shù)

????????(2) 定義與目標(biāo)函數(shù)原型相同的函數(shù)替代目標(biāo)函數(shù)

????????例如:

//3.定義新的函數(shù)替代目標(biāo)函數(shù),需要與目標(biāo)函數(shù)的原型相同 int newsystem(const char * _Command){int result = MessageBoxA(0,"是否允許該程序調(diào)用system命令","提示",1);//printf("result = %d", result);if (result == 1){oldsystem(_Command); //調(diào)用舊的函數(shù)}else{MessageBoxA(0,"終止調(diào)用system命令","提示",0);}return 0; }

5.攔截

//開(kāi)始攔截 void Hook() {DetourRestoreAfterWith();//恢復(fù)原來(lái)狀態(tài)(重置)DetourTransactionBegin();//攔截開(kāi)始DetourUpdateThread(GetCurrentThread());//刷新當(dāng)前線程(刷新生效)//這里可以連續(xù)多次調(diào)用DetourAttach,表明HOOK多個(gè)函數(shù)DetourAttach((void **)&oldsystem, newsystem);//實(shí)現(xiàn)函數(shù)攔截DetourTransactionCommit();//攔截生效 } //取消攔截 void UnHook() {DetourTransactionBegin();//攔截開(kāi)始DetourUpdateThread(GetCurrentThread());//刷新當(dāng)前線程//這里可以連續(xù)多次調(diào)用DetourDetach,表明撤銷(xiāo)多個(gè)函數(shù)HOOKDetourDetach((void **)&oldsystem, newsystem); //撤銷(xiāo)攔截函數(shù)DetourTransactionCommit();//攔截生效 }

劫持QQ

實(shí)現(xiàn)劫持system函數(shù)。

1. 設(shè)置項(xiàng)目生成dll

2. 源文件(注意:需要保存為.c文件,或者加上extern C,因?yàn)閐etours是使用C語(yǔ)言實(shí)現(xiàn)的,表示代碼使用C的規(guī)則進(jìn)行編譯)?

#include #include #include // 引入detours頭文件 #include "detours.h"//1.引入detours.lib靜態(tài)庫(kù) #pragma comment(lib,"detours.lib")//2.定義函數(shù)指針 static int ( *oldsystem)(const char * _Command) = system;//定義一個(gè)函數(shù)指針指向目標(biāo)函數(shù)//3.定義新的函數(shù)替代目標(biāo)函數(shù),需要與目標(biāo)函數(shù)的原型相同 int newsystem(const char * _Command){char cmd[100] = {0};int result = 0;sprintf_s(cmd,100, "是否允許該程序執(zhí)行%s指令", _Command);result = MessageBoxA(0,cmd,"提示",1);//printf("result = %d", result);if (result == 1) // 允許調(diào)用{oldsystem(_Command); //調(diào)用舊的函數(shù)}else{// 不允許調(diào)用}return 0; }// 4.攔截 //開(kāi)始攔截 _declspec(dllexport) void Hook() // _declspec(dllexport)表示外部可調(diào)用,需要加上該關(guān)鍵字其它進(jìn)程才能成功調(diào)用該函數(shù) {DetourRestoreAfterWith();//恢復(fù)原來(lái)狀態(tài)(重置)DetourTransactionBegin();//攔截開(kāi)始DetourUpdateThread(GetCurrentThread());//刷新當(dāng)前線程(刷新生效)//這里可以連續(xù)多次調(diào)用DetourAttach,表明HOOK多個(gè)函數(shù)DetourAttach((void **)&oldsystem, newsystem);//實(shí)現(xiàn)函數(shù)攔截DetourTransactionCommit();//攔截生效 }//取消攔截 _declspec(dllexport) void UnHook() {DetourTransactionBegin();//攔截開(kāi)始DetourUpdateThread(GetCurrentThread());//刷新當(dāng)前線程//這里可以連續(xù)多次調(diào)用DetourDetach,表明撤銷(xiāo)多個(gè)函數(shù)HOOKDetourDetach((void **)&oldsystem, newsystem); //撤銷(xiāo)攔截函數(shù)DetourTransactionCommit();//攔截生效 }// 劫持別人的程序:通過(guò)DLL注入,并調(diào)用Hook函數(shù)實(shí)現(xiàn)劫持。 // 劫持系統(tǒng):通過(guò)DLL注入系統(tǒng)程序(如winlogon.exe)實(shí)現(xiàn)劫持系統(tǒng)函數(shù)。_declspec(dllexport) void main(){Hook(); // 攔截system("tasklist"); //彈出提示框UnHook(); // 解除攔截system("ipconfig"); //成功執(zhí)行system("pause"); // 成功執(zhí)行 }

3. 生成"劫持1.dll"文件

4. 把dll注入到QQ.exe

DLL注入工具下載: https://coding.net/u/linchaolong/p/DllInjector/git/raw/master/Xenos.exe
????????(1) 打開(kāi)dll注入工具,點(diǎn)擊add,選擇"劫持1.dll"

????????(2) 在Process中選擇QQ.exe,點(diǎn)擊Inject進(jìn)行注入。

????????(3) 點(diǎn)擊菜單欄Tools,選擇Eject modules顯示當(dāng)前QQ.exe進(jìn)程中加載的所有模塊,如果有"劫持1.dll"表示注入成功。

5. 攔截QQ執(zhí)行system函數(shù)

????????(1) 點(diǎn)擊Advanced,在Init routine中填寫(xiě)動(dòng)態(tài)庫(kù)(dll)中的函數(shù)的名稱(chēng),如Hook,然后點(diǎn)擊Inject進(jìn)行調(diào)用。此時(shí),我們已經(jīng)把system函數(shù)劫持了。
????????(2) 點(diǎn)擊Advanced,在Init routine中填寫(xiě)main,執(zhí)行動(dòng)態(tài)庫(kù)中的main函數(shù)。

?????????此時(shí),彈出一個(gè)對(duì)話框,問(wèn)是否允許執(zhí)行tasklist指令,表示成功把system函數(shù)攔截下來(lái)了。

參考

DLL注入工具源碼地址: https://coding.net/u/linchaolong/p/DllInjector/git
說(shuō)明:
該工具來(lái)自以下兩個(gè)項(xiàng)目
Xenos: https://github.com/DarthTon/Xenos.git
Blackbone: https://github.com/DarthTon/Blackbone

總結(jié)

以上是生活随笔為你收集整理的C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人综合在线 | 日产国产亚洲精品系列 | 久久午夜国产 | 极度诱惑香港电影完整 | 欧美日韩激情在线观看 | 首尔之春在线观看 | 久久人妻精品白浆国产 | 久久婷婷综合国产 | 欧美成人aaa片一区国产精品 | 国产人与禽zoz0性伦 | 成人在线观看亚洲 | 国产精品区一区二 | 精品人妻一区二区三区香蕉 | xxxx69国产| 欧美老女人性视频 | 四虎永久免费影院 | 精品在线免费观看 | 蜜臀av88 | 亚洲国产成人精品女人久久久 | 久久99精品久久久 | 日韩精品在线播放 | 四虎国产精品永久免费观看视频 | 黄色网址在线播放 | 中文字幕人妻一区二区三区在线视频 | 日韩大片一区二区 | av动漫免费观看 | 日韩福利一区二区三区 | 一级视频片 | 国产午夜视频 | va毛片 | 久久大尺度 | 欧美激情一区二区三级高清视频 | 久久春色 | 国产在线视频二区 | 久草免费在线色站 | 超碰三级 | 2024av| 亚洲加勒比在线 | 日韩精品视频免费播放 | 国产精品88av | 国产码视频 | 一级黄色录像免费观看 | 成人在线直播 | 国产午夜激情视频 | 国产精品久久毛片av大全日韩 | 91精品福利视频 | 亚洲AV无码成人片在线观看 | 人妻在客厅被c的呻吟 | xxx日本少妇 | 一本色道久久综合亚洲精品酒店 | 亚洲视频在线观看网站 | 中文字幕乱码在线观看 | 国产精品一区二区无码对白 | 亚洲国产系列 | 污污视频免费观看 | 狠狠躁日日躁夜夜躁2022麻豆 | 色婷婷国产 | 韩国三级做爰高潮 | 天天干夜夜艹 | 日韩少妇av | 国产一线在线观看 | 国内毛片毛片毛片毛片毛片 | 国内精品嫩模av私拍在线观看 | 欧美精品久久久久久久久 | 秋霞午夜鲁丝一区二区 | 亚洲美女一区 | 快色网站 | 日韩a在线观看 | 久久网亚洲 | 91看片免费版 | 日本黄页网站免费大全 | 精品熟女一区二区 | av永久免费在线观看 | 五月天一区二区 | 爱爱三级视频 | 久久久久国产精品一区二区 | 国产欧美一区二区三区在线老狼 | 国内偷拍一区 | 亚洲熟妇中文字幕五十中出 | 亚洲色图清纯唯美 | 黄色片xxxx| 91香蕉在线视频 | 日韩有码专区 | 国产成人无码一区二区在线播放 | 成年人免费黄色片 | 午夜精品久久久内射近拍高清 | 九九九热精品 | www.色欧美 | 色av吧 | 无码粉嫩虎白一线天在线观看 | 久久中文字幕人妻熟av女蜜柚m | 天堂资源站 | 亚洲精品乱码久久久久久久 | 日美女逼逼 | 国产伦精品一区二区三区四区 | 男男gay同性三级 | 久久国产精品久久国产精品 | 91tv在线| 黄色成人在线视频 |