38.控制功能實現

上一個內容:37.添加簡易的調試功能

以?37.添加簡易的調試功能?它的代碼為基礎進行修改

效果圖:

下圖紅框位置的功能實現

Dlls項目中添加一個Dialog

Dialog如下

然后給它添加一個類,MFC添加的類可能會報錯添加 #include "afxdialogex.h" 這一句就好了

然后把類引入到Dlls.文件中,并且創建下圖紅框中的兩個變量

然后dll實現代碼如下圖:


// CDllsApp 構造CDllsApp::CDllsApp()
{// TODO:  在此處添加構造代碼,// 將所有重要的初始化放置在 InitInstance 中isShowWindow = false;
}// 唯一的 CDllsApp 對象CDllsApp theApp;
CDllsApp *PtheApp;// CDllsApp 初始化
HHOOK keyHook;
LRESULT CALLBACK KeyCallBack(int nCode, WPARAM w, LPARAM l);
BOOL CDllsApp::InitInstance()
{CWinApp::InitInstance();PtheApp = this;keyHook = SetWindowsHook(WH_KEYBOARD, KeyCallBack);AfxMessageBox(L"注入成功!");return TRUE;
}LRESULT CALLBACK KeyCallBack(int nCode, WPARAM w, LPARAM l) {if ((l&(1<<31)) == 0) {switch (w){case VK_HOME: {if (PtheApp->wndMain == NULL) {PtheApp->wndMain = new CWndMain();PtheApp->wndMain->Create(IDD_WNDMAIN);}PtheApp->isShowWindow = !PtheApp->isShowWindow;PtheApp->wndMain->ShowWindow(PtheApp->isShowWindow);break;}default:break;}}return CallNextHookEx(keyHook, nCode, w, l);
}

CWndINJ.cpp文件中代碼修改:

void CWndINJ::OnNMDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼*pResult = 0;int index = pNMItemActivate->iItem;if (index < 0)return;CString GamePath = ExeLst.GetItemText(index, 2);CString GameExe = ExeLst.GetItemText(index, 1);CString GameCmds = ExeLst.GetItemText(index, 3);CString GameDlls = ExeLst.GetItemText(index, 4);UpdateData(TRUE);PROCESS_INFORMATION prinfo{};bool Pause = B_PAUSE;if (B_INJCET && (GameDlls.GetLength() > 1)) {Pause = true;}m_INJCET.StartProcess(GameExe, GamePath, GameCmds.GetBuffer(), &prinfo, Pause);if (B_INJCET && (GameDlls.GetLength() > 1)) {m_INJCET.CreateRemoteData(prinfo.hProcess, GameExe, GameDlls);}if (B_DEBUG){PROCESS_INFORMATION odinfo{};//F:\其它\OllyDbg\Ollydbg.exe - p 4760CString dbgExe, dbgPath, dbgCmds;dbgExe = L"F:\\其它\\OllyDbg\\Ollydbg.exe";dbgPath = L"F:\\其它\\OllyDbg\\";dbgCmds.Format(L"%s -p %d", dbgExe, prinfo.dwProcessId);m_INJCET.StartProcess(dbgExe, dbgPath, dbgCmds.GetBuffer(), &odinfo, false);}if (B_PAUSE) {AfxMessageBox(L"按下確認,進程開始執行!");}ResumeThread(prinfo.hThread);// 用來指定創建時進程的主窗口的窗口工作站、桌面、標準句柄和外觀。// STARTUPINFO si{};// si.cb = sizeof(si);//STARTUPINFO si{};//si.cb = sizeof(si);//CreateProcess(dbgExe,//    dbgExe.GetBuffer(),//    NULL, NULL,//    false,//    // 新進程的主線程處于掛起狀態創建,在調用 ResumeThread 函數之前不會運行。//    0,//    NULL,//    dbgPath,//    &si,//    &odinfo//);//ResumeThread(odinfo.hThread);//m_INJCET.CodeRemoteData(&_data);/**CreateProcess(GameExe,GameCmds.GetBuffer(),NULL,NULL,FALSE,// 新進程的主線程處于掛起狀態創建,在調用 ResumeThread 函數之前不會運行。CREATE_SUSPENDED,NULL,GamePath,&si,&prinfo);*//** 方式一調用apiCStringA GameExeA;GameExeA = GameExe;PLOADED_IMAGE image =  ImageLoad(GameExeA, NULL);DWORD dEntryPoint = image->FileHeader->OptionalHeader.AddressOfEntryPoint;CString wTxt;wTxt.Format(L"%X", dEntryPoint);AfxMessageBox(wTxt);ImageUnload(image)*//** 方式二(要在32位環境下運行)void* image = _imageload(GameExe.GetBuffer());IMAGE_DOS_HEADER* dosHeader = (IMAGE_DOS_HEADER*)image;unsigned PEAddress =  dosHeader->e_lfanew + (unsigned)image;IMAGE_NT_HEADERS* ntHeader = (IMAGE_NT_HEADERS*)PEAddress;DWORD dEntryPoint = ntHeader->OptionalHeader.AddressOfEntryPoint;CString wTxt;wTxt.Format(L"%X", dEntryPoint);AfxMessageBox(wTxt);_unloadimage(image);*///LPVOID adrRemote = VirtualAllocEx(prinfo.hProcess, 0, 0x3000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//SIZE_T lwt;//WriteProcessMemory(prinfo.hProcess, adrRemote, INJECTCode, 0x200, &lwt);//CString wTxt;//wTxt.Format(L"%X", adrRemote);//AfxMessageBox(wTxt);// 讓游戲繼續運行//m_INJCET.CreateRemoteData(prinfo.hProcess, GameDlls.GetBuffer());}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/35277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35277.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/35277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

聚酰胺-酰亞胺(PAI)應用前景廣闊 酰氯法和異氰酸酯法為其主流制備方法

聚酰胺-酰亞胺&#xff08;PAI&#xff09;應用前景廣闊 酰氯法和異氰酸酯法為其主流制備方法 聚酰胺-酰亞胺又稱PAI&#xff0c;是一種分子鏈呈酰亞胺環和酰胺鍵有規則交替排列的高性能熱塑性樹脂。PAI具有耐磨耗性能好、摩擦系數低、尺寸穩定性好、耐高溫、耐輻射、化學穩定性…

通俗易懂的Chat GPT以及國內GPT推薦

ChatGPT是一種先進的聊天機器人&#xff0c;它的全稱是“生成式預訓練變換器”&#xff08;Generative Pre-trained Transformer&#xff09;。ChatGPT背后的基本原理可以簡化為以下幾個關鍵點&#xff1a; 大規模語言模型&#xff1a; ChatGPT建立在一個大規模的語言模型之上&…

如何選擇OLED弧形屏廠家

在選擇OLED弧形屏廠家時&#xff0c;為確保采購到高質量且符合需求的產品&#xff0c;需要綜合考慮多個因素。以下是一份詳細的指南&#xff0c;幫助您清晰、系統地選擇OLED弧形屏廠家&#xff1a; 一、技術實力 研發能力&#xff1a;了解廠家在OLED顯示技術方面的研發能力&…

華為云L實例云服務器部署前后端分離項目全過程記錄

1、配置云服務器 https://blog.csdn.net/modaoshi51991/article/details/139547630 2、上傳前端項目并配置nginx 首先在前端項目運行以下代碼將項目打包 我遇到node.js和openssl兩個版本不兼容問題&#xff0c;更新版本依次解決即可 vue-cli-service build看一下package.json…

第12集《大乘起信論》

請大家打開《講義》第二十四頁&#xff0c;卯三、總顯四種大義。 這一大科是講到心生滅門。生滅的因緣是依止阿賴耶識&#xff0c;阿賴耶識當中有兩種功能&#xff1a;一個是覺&#xff0c;一個是不覺。覺悟的功能又分成兩種&#xff1a;一個是始覺&#xff0c;一個是本覺。我…

解決SpringMVC使用MyBatis-Plus自定義MyBaits攔截器不生效的問題

自定義MyBatis攔截器 如果是SpringBoot項目引入Component注解就生效了&#xff0c;但是SpringMVC不行 import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.parameter.ParameterHandler; import org.apache.ibatis.executor.statement.StatementHandler; i…

亮數據,一款新的低代碼爬蟲利器!

在當今數據驅動型時代&#xff0c;數據采集和分析能力算是個人和企業的核心競爭力。然而&#xff0c;手動采集數據耗時費力且效率低下&#xff0c;而且容易被網站封禁。 我之前使用過一個爬蟲工具&#xff0c;亮數據&#xff08;Bright Data&#xff09; &#xff0c;是一款低…

力扣隨機一題 哈希表 排序 數組

博客主頁&#xff1a;誓則盟約系列專欄&#xff1a;IT競賽 專欄關注博主&#xff0c;后期持續更新系列文章如果有錯誤感謝請大家批評指出&#xff0c;及時修改感謝大家點贊&#x1f44d;收藏?評論? 2491.劃分技能點相等的團隊【中等】 題目&#xff1a; 給你一個正整數數組…

【深海王國】小學生都能玩的單片機?零基礎入門單片機Arduino帶你打開嵌入式的大門!(9)

Hi?(?o?)?, 各位深海王國的同志們&#xff0c;早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督繼續為大家帶來系列——小學生都能玩的單片機&#xff01;帶你一周內快速走進嵌入式的大門&#xff0c;let’s go&#xff01; &#xff08;9&#x…

殷山:摩斯大模型隱私保護技術和應用探索

背景介紹 6月20日下午&#xff0c;“2024信通院數據智能大會”圓滿落幕&#xff0c;摩斯技術負責人殷山在論壇上分享了摩斯在大模型隱私保護技術和行業應用的探索。 殷山發表“大模型隱私保護”主題演講 摩斯技術負責人殷山在“數據智能安全主題論壇“上&#xff0c;帶來“大…

web學習筆記(六十八)項目總結

目錄 1.如何取到對象的第一項的鍵名 2.如何在鍵名不確定的情況下取到對象的第一項的值 3.如何獲取對象的長度 4.計算屬性和watch監聽監聽深層數據 5.樣式穿透 1.如何取到對象的第一項的鍵名 可以通過Object.keys將對象轉化為一個包含對象所有可枚舉屬性名的數組&#xff…

Java中的微服務架構實現方法

Java中的微服務架構實現方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在當今軟件開發的環境中&#xff0c;微服務架構已經成為了構建大型應用程序的主流…

NIVision-LabVIEW在灰度圖上畫圓

問題來源 在csdn上看到的這樣一個問題&#xff0c;好像也沒個正經答案&#xff0c;都用chatGPT回答&#xff0c;挺沒勁的。不說提供個vi源代碼&#xff0c;至少也來張截圖嘛。我想著問題也不難&#xff0c;就自己動動手吧。 代碼展示1 1、首先使用imaq ArrayToImage.vi創建了一…

java error ConcurrentModificationException 并發修改異常

ConcurrentModificationException 概述 這個異常在 Java 中通常發生在以下場景&#xff1a;當某個線程在遍歷一個集合&#xff08;如 ArrayList、HashMap 等&#xff09;的過程中&#xff0c;另一個線程嘗試修改這個集合的結構&#xff08;如添加、刪除元素&#xff09;&#…

java中處理RunTimeException類的方式

在Java中&#xff0c;RuntimeException是所有運行時異常的父類。一些常見的RuntimeException子類包括&#xff1a; NullPointerException&#xff08;空指針異常&#xff09;&#xff1a;當試圖訪問空對象的屬性或調用空對象的方法時拋出。IllegalArgumentException&#xff0…

sheng的學習筆記-AI-學習向量量化

AI目錄 sheng的學習筆記-AI目錄-CSDN博客 需要學習前置知識&#xff1a;聚類&#xff0c;可參考 sheng的學習筆記-AI-聚類(Clustering)-CSDN博客 什么是學習向量量化 “學習向量量化”&#xff08;Learning Vector Quantization&#xff0c;簡稱LVQ&#xff09;是試圖找到一…

【Android面試八股文】ViewHolder為什么要被聲明成靜態內部類?

文章目錄 ViewHolder為什么要被聲明成靜態內部類?1. 避免隱式引用導致的內存泄漏2. 提高性能3. 代碼可讀性和維護性實例代碼總結ViewHolder為什么要被聲明成靜態內部類? 將 ViewHolder 聲明為靜態內部類有幾個重要的原因,這樣做可以提高性能并避免潛在的內存泄漏。下面是詳…

Qt | 子類化 QStyle(Qt自帶圖標大全)

01、簡介 1、把繪制自定義部件外觀的步驟大致分為三大板塊,如下: ①、樣式元素:即指定需要繪制的圖形元素(比如焦點框、按鈕,工具欄等)。樣式元素使 用 QStyle 類中的一系列枚舉(共有 11 個枚舉)進行描述。 ②、樣式選項:包含了需要繪制的圖形元素的所有信息,比如包含…

Tomcat 下載部署到 idea

一、下載Tomcat Tomcat 是Apache 軟件基金會&#xff08;Apache Software Foundation&#xff09;下的一個核心項目&#xff0c;免費開源、并支持Servlet 和JSP 規范。屬于輕量級應用服務器&#xff0c;在中小型系統和并發訪問用戶不是很多的場合下被普遍使用&#xff0c;是開發…

啟動VMWare虛擬機報錯

1. 無法打開內核設備“\\.\VMCIDev\VMX”: 操作成功完成。是否在安裝 VMware Workstation 后重新引導? 模塊“DevicePowerOn”啟動失敗。 未能啟動虛擬機。 解決辦法: 解決辦法: 將 Ubuntu 64 位.vmx 找到vmci0.present"TRUE"這行改成 vmci0.present "FAL…