C++远程dll注入到QQ聊天工具
生活随笔
收集整理的這篇文章主要介紹了
C++远程dll注入到QQ聊天工具
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
遠程dll注入到QQ
邏輯:
1.獲取QQ的進程ID;
2.打開進程獲取進程句柄,從而對進程進行操作;
3.對進程句柄進行操作,開辟一塊空間,讓目標進程進行調用我們所寫的東西;
4.往開辟好的內存中寫入數據;
5.設置何時調用我們所寫的東西(QQ會加載各種dll,當調用LoadLibraryA【Kernel32.dll這個里面的函數】時,就會調用我們所寫的東西);
6.開辟一個遠程線程去調用所寫的東西;
?
程序運行截圖如下:
輸入QQ的PID:
然后QQ就被注入掉了!
如下圖:
?
首先看下程序結構:
下面來看看源碼:
main.cpp
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <windows.h>int main(){BOOL bRet = FALSE;HANDLE hProcess = INVALID_HANDLE_VALUE;BYTE *pbProcessAddr = nullptr;do{printf("輸入PID:");DWORD dwPID = 0;scanf("%d", &dwPID);//打開進程,獲取進程句柄,使用進程句柄操作進程hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);if(INVALID_HANDLE_VALUE == hProcess){break;}//在對方的進程中分配一塊內存,讓我們寫東西char szDllPath[MAX_PATH] = {0};GetCurrentDirectoryA(MAX_PATH, szDllPath);strcat(szDllPath, "\\DllDemo.dll");int nPathLen = (strlen(szDllPath) + 1);pbProcessAddr = (BYTE*)VirtualAllocEx(hProcess, nullptr, nPathLen, MEM_COMMIT, PAGE_READWRITE);if(!pbProcessAddr){break;}//往分配好的內存中寫入數據if(0 == WriteProcessMemory(hProcess,pbProcessAddr, szDllPath, nPathLen, nullptr)){break;}//讓其執行我們寫入的東西//啟動一條遠程線程,執行代碼,注入DLL,目的是加載DLL//LoadLibrary(); //傳需要加載的dll的名字, 會先找當前目錄下,然后找系統目錄//創建并執行遠程線程PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandleA("Kernel32"), "LoadLibraryA");if(!pfnStartAddr){break;}HANDLE hThread = CreateRemoteThread(hProcess, nullptr, 0, pfnStartAddr, pbProcessAddr, 0, nullptr);if(!hThread){break;}WaitForSingleObject(hThread, INFINITE);CloseHandle(hThread);bRet = TRUE;}while (FALSE);if(!bRet){printf("錯誤代碼:%d", GetLastError());}if(pbProcessAddr){VirtualFreeEx(hProcess,pbProcessAddr, 0, MEM_RELEASE);}if(INVALID_HANDLE_VALUE != hProcess){CloseHandle(hProcess);}system("pause");return 0; }?
dll直接生成,修改dllmain.cpp內容如下:
// dllmain.cpp : 定義 DLL 應用程序的入口點。 #include "stdafx.h"BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(nullptr, L"已經成功打入敵人內部", L"報告首長", MB_OK);case DLL_THREAD_ATTACH:MessageBox(nullptr, L"敵人已經運行了我", L"報告首長", MB_OK);case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE; }?
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的C++远程dll注入到QQ聊天工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机图形几个小常识
- 下一篇: C++工作笔记-对二级指针的进一步理解(