免责声明:以下内容仅供学习使用

本文的工具成品下载见githubmythwarehelper仓库,附加资源也在内
已完成功能:杀死极域,获取极域安装路径,从注册表破解极域密码,重启极域,挂起极域,恢复极域,解除极域全屏窗口限制

搜索极域进程

极域主进程

极域的进程由StudentMain.exe启动,因此,只需要使用CreateToolhelp32Snapshot创建快照,遍历所有进程的所有模块,找到其中可执行文件为StudentMain.exe那一个进程即可。

以下是代码实现

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;
}

极域广播窗口

极域广播窗口是一个窗体,窗体标题固定为“屏幕广播”,因此可以直接使用FindWindow(LPCSTR lpClassName,LPCSTR lpWindowName)函数来获取进程句柄,在第二个参数处填入窗体名即可

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

获取极域安装路径(用来在杀死极域后重启)

极域安装路径存储在系统注册表SOFTWARE\\WOW6432Node\\TopDomain\\e-Learning Class Standard\\1.00\\TargetDirectory

以下为获取函数

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) {//打开注册表失败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;
}

杀死极域进程

taskkill

在命令行中输入
taskkill /f /im studentmain.exe
即可杀死极域进程,但有时候会失效

ntsd

ntsd是一个用户态进程调试工具,从Windows 2000就开始被附随在System32目录下。它能够结束除System、smss.exe、csrss.exe、lsass.exe及各种rootkit程序外所有的程序。但在Windows Vista及以上版本的Windows中不含ntsd, 必须手动下载至电脑中才可使用。——百度百科

在命令行中输入
./ntsd.exe -c q -pn studentmain.exe
即可杀死极域进程,目前博主没有遇到失效的情况

如需下载ntsd.exe可访问我的mythwarehelper仓库

挂起和恢复极域进程

再不使用外部DLL的情况下,C++没有原生的挂起和回复进程的函数,因此不能白嫖 挂起进程只能自己实现,进程由线程构成,因此如果挂起了一个进程的每一个线程,就相当于是挂起了这个进程。挂起线程可使用SuspendThread,恢复线程可使用ResumeThread

以下是代码实现

/*
函数功能:挂起进程中的所有线程
参数1:进程ID
参数2:若为TRUE时对进程中的所有线程调用SuspendThread,挂起线程若为FALSE时对进程中的所有线程调用ResumeThread,恢复线程
*/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);}
}

解除全屏按钮限制

极域的广播窗口有一个全屏切换按钮,在强制全屏时会设置为无法使用,变成灰色,Windows的按钮即为控件,交互式控件有两个状态,一个是可用,一个是不可用,可以通过调用EnableWindow函数来设置此类控件的状态,也可以借此设置全屏切换按钮的状态,在老师设置按钮为不可用时,调用此函数设置按钮为可用,就可以自行退出全屏了

以下是代码实现

//这是一个EnumChildWindows函数的回调函数,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);}//找到这个按钮就跳出遍历return FALSE;}return TRUE;
}

破解极域密码

极域的密码存储在系统注册表SOFTWARE\\TopDomain\\e-Learning Class\\Student
极域的密码在部分版本中使用明文存储,但新版都是存储的密文
解密代码来源
解密分析视频

以下是破解代码:

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;
}

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

  1. JS全屏代码,解决PDF.js在iframe中部分浏览器全屏功能错误

    JS全屏代码,解决PDF.js在iframe中部分浏览器全屏功能错误 PDF.js在iframe模式在火狐浏览器中按钮被屏蔽 经分析,viewer.js 发现了判断逻辑 debug发现 第二个判断后为 ...

  2. Python下安装Pywifi进行WiFi密码破解

    Python下安装Pywifi进行WiFi密码破解 能成功的在Python下安装Pywifi模块的方法及软件 前段时间在网上看了一些关于Python下安装Pywifi模块的方法,很多都是安装不成功的, ...

  3. 博客网页代码块渲染-显示行号,一键复制,全屏显示,mac风格(基于mavon-editor或wangEditor)

    效果预览 亮点:mac风格代码块,一键复制,全屏浏览,点击按住文字空白区域可左右滑动(感觉有待优化),双击关闭全屏浏览...... 样式可自行优化 前提条件(待渲染的代码块格式) <pre> ...

  4. mysql的二进制安装与备份与密码破解!!

    MySQL的安装! 1. 下载安装包! [root@lzz ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7. ...

  5. OPPO R11 R11系列获取root权限,应该也包括密码破解(自行尝试),本人请测root 可以。

    首先请移步这里详细看下: OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主 20200216新增: 参考连接:http://www.romleyu ...

  6. 系统安全和应用及实验部分(弱口令扫描、密码破解、NMAP嗅探)

    文章目录 一.账号安全控制 1.基本安全措施 (1)系统账号的清理 (2)密码安全控制 (3)历史命令.自动注销 二.用户切换.提权 1.用户切换 2. 提升执行权限 三.PAM安全认证 1.PAM认 ...

  7. Python入门程序 字符串应用(学号判断程序、密码破解程序、身份证的秘密)

    Python入门程序 字符串应用(学号判断程序.密码破解程序.身份证的秘密) 没想到学校会在大二同时学习Java的的时候一起学Python语言,在这写一些平时的python编程作业. 就从字符串的应用 ...

  8. IOS手机全屏长按识别二维码HTML代码

    代码段作用讲解: 1. 二维码的全屏样式, opacity: 0; 透明样式, touch-callout: none; -webkit-touch-callout: none; -ms-touch- ...

  9. Uniapp微信小程序视频全屏播放功能极简实现法

    *高端的食材,往往只需要最朴素的烹饪方式,本文用css旋转定位实现视频全屏播放,朴实无华,简单实用,本文为原创,分享请标明出处* 实习入职第三周,在经过两周的改bug和切图之后,组里说给我一个有挑战性 ...

最新文章

  1. 纳米孔(Oxford Nanopore)测序仪的学习笔记
  2. 使用jquery 根据下拉列表的name值查找被选中的值
  3. 【caffe-Windows】mnist实例编译之model的使用-classification
  4. 我是如何指数级提升开发技术的?
  5. 利用Docker搭建Redis主从复制集群
  6. 批量打印pdf并合并_CAD批量打印攻略
  7. rowspan 动态变化_使用colspan和rowspan动态删除html表中的多个列
  8. springboot整合Apollo
  9. SCVMM 2012 R2---安装前的准备工作
  10. java如何代码生成矩形_Java中能不能创建不是矩形的窗口。
  11. 指派问题程序c语言,指派问题lingo程序样例
  12. 全自动高清录播服务器,全自动高清录播服务器 高清录播系统
  13. 基于粒子群算法的微电网优化调度应用研究(六、总结与展望)
  14. linux 下ssd训练自己的数据
  15. java 封包_封包和解包简介
  16. 【大前端】用html和css写一个QQ邮箱登录页面
  17. 【LeetCode】马三来刷题之 Single Number
  18. java中subject类_RxJava中常见的几种Subject
  19. 华为独家承建波兰P4 UMTS网络
  20. 解决Oracle 11g企业管理器无法打开

热门文章

  1. LiveVISGAT1400视图库服务-支持海康大华华为宇视天地伟业等设备视图库接入使用说明
  2. webapi输出炜json_asp.net web api只返回json数据格式
  3. fortran中类型
  4. windows10用内带wifi共享功能
  5. Jakarta Commons Logging(JCL)开发手记
  6. 怎么下载优酷,土豆、乐视网上视频,4种快速方法
  7. 天天使用电脑的人要注意哪些?
  8. FLASH时钟(www.lancu.com)
  9. WASM(WebAssembly)简介
  10. PHPStrom 支持GO语言