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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

极域脱控破解分析+代码实现(杀死和重启,挂起和恢复,解除全屏按钮限制,获取极域安装路径,极域密码破解)

發(fā)布時(shí)間:2024/3/26 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 极域脱控破解分析+代码实现(杀死和重启,挂起和恢复,解除全屏按钮限制,获取极域安装路径,极域密码破解) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

免責(zé)聲明:以下內(nèi)容僅供學(xué)習(xí)使用

本文的工具成品下載見(jiàn)githubmythwarehelper倉(cāng)庫(kù),附加資源也在內(nèi)
已完成功能:殺死極域,獲取極域安裝路徑,從注冊(cè)表破解極域密碼,重啟極域,掛起極域,恢復(fù)極域,解除極域全屏窗口限制

搜索極域進(jìn)程

極域主進(jìn)程

極域的進(jìn)程由StudentMain.exe啟動(dòng),因此,只需要使用CreateToolhelp32Snapshot創(chuàng)建快照,遍歷所有進(jìn)程的所有模塊,找到其中可執(zhí)行文件為StudentMain.exe那一個(gè)進(jìn)程即可。

以下是代碼實(shí)現(xiàn)

struct Jiyu {DWORD id;char filepath[260];BOOL flag; } jiyu;Jiyu ModuleIsAble(DWORD ProcessPid, LPCSTR Modulename) {Jiyu tj;if (Modulename[0] == '\0') {tj.flag = FALSE;return tj;}MODULEENTRY32 me;me.dwSize = sizeof(MODULEENTRY32);HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessPid);if (Module32First(hSnapshot, &me)) {do {//printf("thread - %s\n", me.szModule);if (!strcmp(Modulename, me.szModule)) {CloseHandle(hSnapshot);strcpy(tj.filepath, me.szExePath);tj.id = ProcessPid;tj.flag = TRUE;return tj;}} while (Module32Next(hSnapshot, &me));}CloseHandle(hSnapshot);tj.flag = FALSE;return tj; }Jiyu GetProcessPidFromFilename(LPCSTR Filename) {Jiyu tj;if (Filename[0] == '\0') {tj.flag = FALSE;return tj;}PROCESSENTRY32 te;te.dwSize = sizeof(PROCESSENTRY32);HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (Process32First(hSnapshot, &te)) {do {HANDLE temphandle = OpenProcess(PROCESS_ALL_ACCESS, false, te.th32ProcessID);//printf("%ld\n", te.th32ProcessID);tj = ModuleIsAble(te.th32ProcessID, Filename);if (tj.flag == TRUE) {CloseHandle(hSnapshot);return tj;}CloseHandle(temphandle);} while (Process32Next(hSnapshot, &te));}tj.flag = FALSE;return tj; }

極域廣播窗口

極域廣播窗口是一個(gè)窗體,窗體標(biāo)題固定為“屏幕廣播”,因此可以直接使用FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName)函數(shù)來(lái)獲取進(jìn)程句柄,在第二個(gè)參數(shù)處填入窗體名即可

HWND Class = FindWindowW(NULL, L"屏幕廣播");//Class為獲取到的窗口句柄 if (Class != NULL) {//廣播窗口存在GetWindowThreadProcessId(Class, &pid);//由窗口句柄獲取pidHANDlE ClassHandle = OpenThread(THREAD_ALL_ACCESS, false, GetMainThreadFromId(pid));//由pid獲取可操控窗口的句柄//... } else {//廣播窗口不存在//... }

獲取極域安裝路徑(用來(lái)在殺死極域后重啟)

極域安裝路徑存儲(chǔ)在系統(tǒng)注冊(cè)表SOFTWARE\\WOW6432Node\\TopDomain\\e-Learning Class Standard\\1.00\\TargetDirectory

以下為獲取函數(shù)

UINT GetMythwarePathFromRegedit(char *str) {HKEY retKey;char tstr[200] = "SOFTWARE\\WOW6432Node\\TopDomain\\e-Learning Class Standard\\1.00";DWORD dwDisposition = REG_OPENED_EXISTING_KEY;LONG ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, tstr, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ, NULL, &retKey, &dwDisposition);if (ret != ERROR_SUCCESS) {//打開(kāi)注冊(cè)表失敗return FALSE;}BYTE tByte[MAX_PATH * 2 + 1];DWORD nSize = MAX_PATH * 2 + 1;int sum = 0;ret = RegQueryValueEx(retKey, "TargetDirectory", NULL, NULL, tByte, &nSize);if (ret == ERROR_SUCCESS) {for (int i = 0; i < int(nSize); i += 1) {*(str + sum) = tByte[i];if (*(str + sum++) == '\\') {*(str + sum++) = '\\';}}//獲取極域安裝路徑成功return TRUE;}//獲取極域安裝路徑失敗return FALSE; }

殺死極域進(jìn)程

taskkill

在命令行中輸入
taskkill /f /im studentmain.exe
即可殺死極域進(jìn)程,但有時(shí)候會(huì)失效

ntsd

ntsd是一個(gè)用戶態(tài)進(jìn)程調(diào)試工具,從Windows 2000就開(kāi)始被附隨在System32目錄下。它能夠結(jié)束除System、smss.exe、csrss.exe、lsass.exe及各種rootkit程序外所有的程序。但在Windows Vista及以上版本的Windows中不含ntsd, 必須手動(dòng)下載至電腦中才可使用。——百度百科

在命令行中輸入
./ntsd.exe -c q -pn studentmain.exe
即可殺死極域進(jìn)程,目前博主沒(méi)有遇到失效的情況

如需下載ntsd.exe可訪問(wèn)我的mythwarehelper倉(cāng)庫(kù)

掛起和恢復(fù)極域進(jìn)程

再不使用外部DLL的情況下,C++沒(méi)有原生的掛起和回復(fù)進(jìn)程的函數(shù),因此不能白嫖 掛起進(jìn)程只能自己實(shí)現(xiàn),進(jìn)程由線程構(gòu)成,因此如果掛起了一個(gè)進(jìn)程的每一個(gè)線程,就相當(dāng)于是掛起了這個(gè)進(jìn)程。掛起線程可使用SuspendThread,恢復(fù)線程可使用ResumeThread

以下是代碼實(shí)現(xiàn)

/* 函數(shù)功能:掛起進(jìn)程中的所有線程 參數(shù)1:進(jìn)程ID 參數(shù)2:若為T(mén)RUE時(shí)對(duì)進(jìn)程中的所有線程調(diào)用SuspendThread,掛起線程若為FALSE時(shí)對(duì)進(jìn)程中的所有線程調(diào)用ResumeThread,恢復(fù)線程 */VOID SuspendProcess(DWORD dwProcessID, BOOL fSuspend) {HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, dwProcessID);if (hSnapshot != INVALID_HANDLE_VALUE) {THREADENTRY32 te = {sizeof(te)};BOOL fOk = Thread32First(hSnapshot, &te);for (; fOk; fOk = Thread32Next(hSnapshot, &te)) {if (te.th32OwnerProcessID == dwProcessID) {HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME, FALSE, te.th32ThreadID);if (hThread != NULL) {if (fSuspend) {SuspendThread(hThread);} else {ResumeThread(hThread);}}CloseHandle(hThread);}}CloseHandle(hSnapshot);} }

解除全屏按鈕限制

極域的廣播窗口有一個(gè)全屏切換按鈕,在強(qiáng)制全屏?xí)r會(huì)設(shè)置為無(wú)法使用,變成灰色,Windows的按鈕即為控件,交互式控件有兩個(gè)狀態(tài),一個(gè)是可用,一個(gè)是不可用,可以通過(guò)調(diào)用EnableWindow函數(shù)來(lái)設(shè)置此類(lèi)控件的狀態(tài),也可以借此設(shè)置全屏切換按鈕的狀態(tài),在老師設(shè)置按鈕為不可用時(shí),調(diào)用此函數(shù)設(shè)置按鈕為可用,就可以自行退出全屏了

以下是代碼實(shí)現(xiàn)

//這是一個(gè)EnumChildWindows函數(shù)的回調(diào)函數(shù),EnumChildWindows的父窗口句柄為極域的廣播窗口句柄 BOOL CALLBACK EnumChildWindowsProc(HWND hwndChild, LPARAM lParam) {HMENU hmenu = GetMenu(hwndChild);if (LOWORD(hmenu) == 1004) {//1004為全屏切換按鈕的HMENU值if (!IsWindowEnabled(hwndChild)) {EnableWindow(hwndChild, TRUE);} else {EnableWindow(hwndChild, FALSE);}//找到這個(gè)按鈕就跳出遍歷return FALSE;}return TRUE; }

破解極域密碼

極域的密碼存儲(chǔ)在系統(tǒng)注冊(cè)表SOFTWARE\\TopDomain\\e-Learning Class\\Student
極域的密碼在部分版本中使用明文存儲(chǔ),但新版都是存儲(chǔ)的密文
解密代碼來(lái)源
解密分析視頻

以下是破解代碼:

BOOL GetMythwarePasswordFromRegedit(char *str) {HKEY retKey;BYTE retKeyVal[MAX_PATH * 10] = { 0 };DWORD nSize = MAX_PATH * 10;LONG ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\TopDomain\\e-Learning Class\\Student", 0, KEY_QUERY_VALUE | KEY_WOW64_32KEY, &retKey);if (ret != ERROR_SUCCESS) {return FALSE;}ret = RegQueryValueExA(retKey, "knock1", NULL, NULL, (LPBYTE)retKeyVal, &nSize);RegCloseKey(retKey);if (ret != ERROR_SUCCESS) {return FALSE;}for (int i = 0; i < int(nSize); i += 4) {retKeyVal[i + 0] = (retKeyVal[i + 0] ^ 0x50 ^ 0x45);retKeyVal[i + 1] = (retKeyVal[i + 1] ^ 0x43 ^ 0x4c);retKeyVal[i + 2] = (retKeyVal[i + 2] ^ 0x4c ^ 0x43);retKeyVal[i + 3] = (retKeyVal[i + 3] ^ 0x45 ^ 0x50);}for (int i = 0; i < int(nSize); i += 1) {printf("%x ", retKeyVal[i]);if (i % 8 == 0) puts("");}int sum = 0;for (int i = 0; i < int(nSize); i += 1) {if (retKeyVal[i + 1] == 0) {*(str + sum) = retKeyVal[i];sum++;if (retKeyVal[i] == 0) break;}}return TRUE; }

總結(jié)

以上是生活随笔為你收集整理的极域脱控破解分析+代码实现(杀死和重启,挂起和恢复,解除全屏按钮限制,获取极域安装路径,极域密码破解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。