基於VC++實現APC注入
請見程式碼,向指定程序插入鉤子
#include "stdafx.h" #define _WIN32_WINNT 0x0400 #include <windows.h> #include <TlHelp32.h> #include <iostream> #include <string> using namespace std; #define DEF_BUF_SIZE 1024 // 用於儲存注入模組DLL的路徑全名 char szDllPath[DEF_BUF_SIZE] = {0} ; // 使用APC機制向指定ID的程序注入模組 BOOL InjectModuleToProcessById ( DWORD dwProcessId ) { DWORD dwRet = 0 ; BOOL bStatus = FALSE ; LPVOID lpData = NULL ; UINT uLen = strlen(szDllPath) + 1; // 開啟目標程序 HANDLE hProcess = OpenProcess ( PROCESS_ALL_ACCESS, FALSE, dwProcessId ) ; if ( hProcess ) { // 分配空間 lpData = VirtualAllocEx ( hProcess, NULL, uLen, MEM_COMMIT, PAGE_EXECUTE_READWRITE ) ; if ( lpData ) { // 寫入需要注入的模組路徑全名 bStatus = WriteProcessMemory ( hProcess, lpData, szDllPath, uLen, &dwRet ) ; } CloseHandle ( hProcess ) ; } if ( bStatus == FALSE ) return FALSE ; // 建立執行緒快照 THREADENTRY32 te32 = { sizeof(THREADENTRY32) } ; HANDLE hThreadSnap = CreateToolhelp32Snapshot ( TH32CS_SNAPTHREAD, 0 ) ; if ( hThreadSnap == INVALID_HANDLE_VALUE ) return FALSE ; bStatus = FALSE ; // 列舉所有執行緒 if ( Thread32First ( hThreadSnap, &te32 ) ) { do{ // 判斷是否目標程序中的執行緒 if ( te32.th32OwnerProcessID == dwProcessId ) { // 開啟執行緒 HANDLE hThread = OpenThread ( THREAD_ALL_ACCESS, FALSE, te32.th32ThreadID ) ; if ( hThread ) { // 向指定執行緒新增APC DWORD dwRet = QueueUserAPC ( (PAPCFUNC)LoadLibraryA, hThread, (ULONG_PTR)lpData ) ; if ( dwRet > 0 ) bStatus = TRUE ; CloseHandle ( hThread ) ; } } }while ( Thread32Next ( hThreadSnap, &te32 ) ) ; } CloseHandle ( hThreadSnap ) ; return bStatus; } int _tmain(int argc, _TCHAR* argv[]) { // 取得當前工作目錄路徑 GetCurrentDirectoryA ( DEF_BUF_SIZE, szDllPath ) ; // 生成注入模組DLL的路徑全名 strcat ( szDllPath, "\\DLLSample.dll" ) ; DWORD dwProcessId = 0 ; // 接收使用者輸入的目標程序ID while ( cout << "請輸入目標程序ID:" && cin >> dwProcessId && dwProcessId > 0 ) { BOOL bRet = InjectModuleToProcessById ( dwProcessId ) ; cout << (bRet ? "注入成功!":"注入失敗!") << endl ; } return 0; }
相關推薦
基於VC++實現APC注入
請見程式碼,向指定程序插入鉤子#include "stdafx.h" #define _WIN32_WINNT 0x0400 #include <windows.h> #include
[原始碼和文件分享]基於VC++實現的支援視訊和圖片的車牌定位與識別系統
1 引言 在建設平安城市的程序中,安全是政府日常管理工作中的重要任務。隨著城市報警和監控系統的建設,對於監控資料的分析也日顯重要。 目前需要對重點街道或路口採集的視訊資料進行分析,主要包括兩點: 對於視訊中過往機動車輛的機動車牌提取出來,生成截圖圖片; 對提取的圖片中機
VC++實現DLL注入
所謂DLL注入就是將一個DLL放進某個程序的地址空間裡,讓它成為那個程序的一部分。要實現DLL注入,首先需要開啟目標程序。 hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允許遠端建立執行緒 PROCES
在net Core3.1上基於winform實現依賴注入例項
目錄 在net Core3.1上基於winform實現依賴注入例項 1.背景 2.依賴注入 2.1依賴注入是什麼? 2.1依賴注入的目的 2.2依賴注入帶來的好處
[Go]基於GoProxy實現HTTP代理,攔截智慧樹注入JS實現自動刷課
這幾天各種網課都快截至了,鄙人也是被逼得煩的不行 雖然網上有刷課的瀏覽器,但是每次換個地方就得重新拷貝一邊 所以就想能不能寫一個HTTP代理,丟在伺服器上,自己不管到哪裡,設定上代理就能刷課 從本質來說其實都是注入JS,跟瀏覽器相比換個注入方式而已 既然要寫HTTP代理,第一時間就想到了大名鼎鼎的Go
基於VC++的人臉美化的實現實踐篇(含程式碼)
作者:張皓霖 上海電力學院 課程老師:秦倫明 上篇我將人臉美化的過程列出來了,這篇我是用VS2012(VC++)+MFC+OpenCv 將這些功能實現。 實驗目的 利用VC++實現人臉美化軟體,要求: 1、具有人臉美化介面; 2、具有磨皮功能,引數可調; 3、具有
基於VC++2010實現雜湊簽名與驗證
數字簽名即如何給一個計算機檔案進行簽字。數字簽字可以用對稱演算法實現,也可以用公鑰演算法實現。但前者除了檔案簽字者和檔案接受者雙方,還需要第三方認證,較麻煩;通過公鑰加密演算法的實現方法,由於用祕密金鑰加密的檔案,需要靠公開金鑰來解密,因此這可以作為數字簽名,簽名者用祕密金鑰加
[原始碼和文件分享]VC++實現的基於人眼狀態的疲勞駕駛識別系統
一、文件說明 文件主要對專案的程式進行說明和描述程式的思想。 程式的功能 程式的思想 程式的原始碼 注意之處(程式中比較難理解,比較特殊的地方) 待改進之處(能使得效果更好的地方) 二、程式內容 1. main()函式
最簡單的基於VC的日誌檔案類庫實現
- if(strPath.Find(_T(":"))<=0) { strPath.Format(_T("%s\\%s"), GetExePath(FALSE), strCurFileName); } } return strPath; } #define LOG_EVENT _T("Chy
APC 基本概念及APC注入的實現(Ring3 + Ring0)----概念介紹
APC 基本概念及APC注入的實現(Ring3 + Ring0)—-概念介紹 基本術語 中斷—-一個非同步事件,可能在任何時候發生,與處理器當前正在執行的程式碼無任何關係。—-中斷的產生主要有:I/O 裝置、處理器始終,或者定時器,另外,
基於VC++2010實現截獲Windows 7密碼
Windows外殼,安裝Windows密碼截獲器 void dey()//解密 { printf("/r/n請不要移動原密碼檔案!"); system("pause"); char buffer[100
基於VC++2010實現哈希簽名與驗證
內存空間 嚴格 選擇 efi idea amp ont 責任 實的 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net 數字簽名即如何給一個計算機文
VC++基於winpcap實現數據包分析
number 存取 mask clas net war ESS defined 返回 分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net winpc
Asp.net基於session實現購物車的方法
lai 程序 clas contain ext info border mode man 本文實例講述了asp.net基於session實現購物車的方法。分享給大家供大家參考,具體如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
基於JQuery實現表單元素值的回寫
spl sel || etc oos min javascrip odi tar form.jsp: <%@ page language="java" import="java.util.*" pageEncoding="GB2312"%> <!DO
Canny邊緣檢測算法原理及其VC實現詳解(一)
常用 差分 實現圖 還需要 鏈接 傳感器 出了 關系 位置 轉自:http://blog.csdn.net/likezhaobin/article/details/6892176 圖象的邊緣是指圖象局部區域亮度變化顯著的部分,該區域的灰度剖面一般可以看作是一個階躍,既從
基於servlet實現一個web框架
-i writer pattern mic mar ems hack dem 包括 servlet作為一個web規範。其本身就算做一個web開發框架,可是其web action (響應某個URI的實現)的實現都是基於類的,不是非常方便,而且3.0之前的版本號還必須通過
Android實戰簡易教程-第二十六槍(基於ViewPager實現微信頁面切換效果)
stat addview data android tid des viewpage 聊天 == 1.頭部布局文件top.xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and
SSH——基於datagrid實現分頁查詢
sel 雙擊 datagrid auto roman .... img order 信息 1. 修改頁面中datagrid的URL地址,訪問action // 取派員信息表格 $(‘#grid‘).datagrid( {
基於C#實現的自動化測試框架:發布自動觸發自動化回歸測試
exc 時間流 測試用例 出現 服務器 text types filter txt 接口自動化測試用例完成以後,以前都是發布以後手動運行測試用例。雖然手動運行下腳本也就是一個F5的事情,但是離自動化測試的標準差得很遠。這兩天有了個大膽的想法,想要實現以下發布時直接觸發自動化