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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++之win98扫雷外挂基础篇

發布時間:2025/3/15 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++之win98扫雷外挂基础篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本次以win98掃雷"高級"場為例子的基礎篇代碼,稍后會寫出所有場通用篇

掃雷"高級"場是指



下面是OD和win98掃雷下載

鏈接:http://pan.baidu.com/s/1gfA10K7 密碼:eiqp


下面開始演示本次實驗:

1.打開OD后,把winmine.exe拖入OD

2.在WM_LBUTTONUP上設置斷點

3.然后單步步過到此位置


在注釋為消息處理(地址為01001FE1)跟隨

4.跟隨后我們在此處可以找到棋盤數據

提取當前位置的數據如下:
我們就知道地址010055330前雙字為0x63(十進制為99)這表示雷數,后面雙字分別是寬度和高度,0x10表示棋盤的邊,0x8F表示雷 所以我們只要檢索此段內存0x8F,并且把他改成0x8E(標志為紅旗),就成功了 如下所示
下面是C/C++代碼 #include <windows.h> #include <stdio.h>int main() {HWND hWinmine = FindWindow(NULL, L"掃雷");DWORD dwPID = 0;GetWindowThreadProcessId(hWinmine, &dwPID);HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwPID);//基礎地址、雷數、寬度、高度DWORD dwBaseAddr = 0x01005330;DWORD dwNum = 0, dwWidth = 0, dwHight = 0, dwSize = 0;//讀取內存信息//讀進程的內存空間數據//參數:第1個參數: HANDLE hProcess進程句柄。//第2個參數: LPCVOID lpBaseAddress基址指針。//第3個參數: LPVOID lpBuffer接收數據緩沖區指針。//第4個參數: DWORD nSize接收數據緩沖區緩沖區大小。//第5個參數: LPDWORD lpNumberOfBytesRead讀入數據量大小指針。返回值: 成功:TRUE失敗:FALSEReadProcessMemory(hProcess, (LPVOID)dwBaseAddr, &dwNum, sizeof(DWORD), &dwSize);ReadProcessMemory(hProcess, (LPVOID)(dwBaseAddr +0x4), &dwWidth, sizeof(DWORD), &dwSize);ReadProcessMemory(hProcess, (LPVOID)(dwBaseAddr + 0x8), &dwHight, sizeof(DWORD), &dwSize);//棋盤總大小=棋盤+空白邊+4角DWORD dwReadsize = dwWidth*dwHight + dwHight * 2 + dwWidth * 2 + 4;PBYTE pByte = new BYTE[dwReadsize];ReadProcessMemory(hProcess, (LPVOID)(dwBaseAddr + 0x16), pByte, dwReadsize, &dwSize);BYTE bClear = 0x8E;for (size_t i = 0; i < dwReadsize; i++){if (pByte[i] == 0x8F){WriteProcessMemory(hProcess, (LPVOID)(dwBaseAddr + 0x16 + i), &bClear, sizeof(BYTE), &dwSize);}}//函數功能: 得到窗體客戶區的大小。//第1個參數: HWND hWnd窗體句柄。//第2個參數: LPRECT lpRect客戶區RECT結構的指針。RECT rt = { 0 };GetClientRect(hWinmine, &rt);InvalidateRect(hWinmine, &rt, true);//這個函數屏蔽一個窗口客戶區的全部或部分區域。這會導致窗口在事件期間部分重畫delete pByte;CloseHandle(hProcess);getchar();return 0;}


總結

以上是生活随笔為你收集整理的C/C++之win98扫雷外挂基础篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。