-
內存截取
鎖定
內存截取是軟件從內存中讀取\獲取自己想要知道的信息返回給用户的一種內存讀寫的用法。
- 中文名
- 內存截取
- 用 途
- 讀取\獲取內存信息
- 常用於
- 外掛、盜號、插件等開發
- 屬 性
- 電子技術
內存截取概念
常用於外掛、盜號、插件等開發當中。
內存截取實例代碼
常見的內存讀寫API有ReadProcessMemory。
實例:
內存截取截取UC密碼
/*----------------------------我是分割線----------------------- 此程序只為演示內存截取,BUG多多,截取密碼最好是與HOOK相結合。 ----------------------------我是分割線-----------------------*/ #include <stdio.h> #include <windows.h> #include <Tlhelp32.h> //懶得重複寫彈框,自定義一個函數實現,其實還是調用MessageBox void MyMessageBox(char* lpText) { MessageBox(NULL,lpText,"Error",0); } //讀取內存,所需參數為進程句柄和要讀取的基址 char* MyReadMemory(HANDLE hProcess,LPCVOID lpBaseAddress) { char *CountPt=new char[MAX_PATH]; ReadProcessMemory(hProcess,lpBaseAddress,CountPt,strlen(CountPt)+1,NULL); return CountPt; } //獲取進程PID,所需參數為進程名 DWORD GetProcessID(char* ProcessName) { PROCESSENTRY32 pe32; //獲取進程快照 HANDLE Procnap= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(Procnap==INVALID_HANDLE_VALUE) { return 0; } //枚舉快照中的第一個進程 BOOL pdnap=Process32First(Procnap,&pe32); while(pdnap) { BOOL ReValue=true; //如果當前進程不是要找的進程名則查找下一個,這裏為uc.exe if(strcmp(pe32.szExeFile,ProcessName)!=0) { pdnap=Process32Next(Procnap,&pe32); } //否則查到到,返回進程PID else { return .th32ProcessID;; } } return 0; } int main() { //進程名 char *ProcName="uc.exe"; DWORD Pid; //獲取進程PID Pid=GetProcessID(ProcName); if(Pid==0) { MyMessageBox("GetProcessID Error!"); return 0; } //打開進程 HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); if(hProcess==NULL) { MyMessageBox("GetProcessID Error!"); return 0; } LPCVOID lpNameBase=(LPCVOID)0x01BA9FAA; //固定地址,包含UC號碼,暱稱和狀態 LPCVOID lpPassBase=(LPCVOID)0x01BFEF68; //密碼動態地址,各位自己調出來 //讀取內存中的內容 char* Countpt=MyReadMemory(hProcess,lpNameBase); char* MyPass=MyReadMemory(hProcess,lpPassBase); MyMessageBox(Countpt); MyMessageBox(MyPass); return 0; } |
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:12次歷史版本
- 最近更新: thereforenay