栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

淦翻极域、机房助手的超强软件,附代码思路

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

淦翻极域、机房助手的超强软件,附代码思路

本文内容仅供学习,不得用于商业用途

目录
    • 使用说明
      • 任务栏托盘图标
      • 快捷键
    • 杀掉极域进程
    • 破解密码
    • 杀掉学生机房管理助手
    • 解除一些系统工具的禁用
    • 黑屏或者全屏广播怎么办
    • 顺便说说

使用说明

源码也在内!
下载:https://wwt.lanzoub.com/b00pu06li
密码:bbzl
有些时候会有dll缺失或者“无法在此计算机上运行”:dll缺失用dev c++重新编译;无法打开,请运行兼容性问题疑难解答
界面很简单,一目了然,下面是隐藏功能

任务栏托盘图标


最小化时大图标从任务栏隐藏,会藏到任务栏托盘

快捷键

Shift+K杀掉机房助手,Shift+W最小化顶层窗口(也可以把鼠标移动到屏幕左上角)

下面是原理

杀掉极域进程

大多数工具都用了ntsd来杀进程,不过容易被封杀,去除控制用作者自己做的工具,具体是暴力杀线程或者清零ntdll基址。为什么不用最简单的TerminateProcess()?请看:

这个函数被极域hook了,如果结束的是极域的进程,就拦截。其实有个简单的办法:

//用杀掉每个线程的方法解决某些进程hook住了TerminateProcess()的问题
bool KillProcess(DWORD dwProcessID) {
	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_TERMINATE, FALSE, te.th32ThreadID);
				TerminateThread(hThread, 0);
				CloseHandle(hThread);
			}
		}
		CloseHandle(hSnapshot);
		return true;
	}
	return false;
}

如果把进程看作一个团伙,那么线程就是团伙的成员,如果把每个成员都干掉了,那么这个团伙就也完蛋了。极域并没有hookTerminateThread(),所以用这种办法来干掉进程。

破解密码

这里用的是这个文章的算法:(更新中)极域破解分析(杀死和重启,挂起和恢复,解除全屏按钮限制,解除键盘锁,获取极域安装路径,极域密码破解)

杀掉学生机房管理助手

机房助手有两个进程,prozs.exe和jfglzs.exe,其中prozs.exe的名字是随机的,每天都不一样,具体看我的文章:最新支持7.2!用C++干掉讨厌的学生机房管理助手
这里支持7.2和7.1以下版本,还有更古老的,名字是固定的(是哪几个进程看这里:【去除控制】对学生机房管理助手6.8的分析与突破),估计也没有什么机房还用这么老的版本,就不做支持了

char version[6];//考虑极端值如6.9.5
HKEY retKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\WOW6432Node\ZM软件工作室\学生机房管理助手", 0, KEY_QUERY_VALUE | KEY_WOW64_32KEY, &retKey);
DWORD size = sizeof(version);
RegQueryValueEx(retKey, "Version", NULL, NULL, (LPBYTE)&version, &size);
RegCloseKey(retKey);
//取时间用于计算prozs.exe的随机进程名
time_t curtime;
time(&curtime);
tm *nowtime = localtime(&curtime);
int n3 = 1 + nowtime->tm_mon + nowtime->tm_mday;int n4, n5, n6;
char c1, c2, c3, c4;
DWORD prozsPid;
if (version[0]=='7'&&version[2]=='2') {
	//以下为7.2版本逻辑
	n4 = n3 % 7, n5 = n3 % 9, n6 = n3 % 5;
	if (n3 % 2 != 0) {
		c1 = 103 + n5,  c2 = 111 + n4,  c3 = 107 + n6,  c4 = 48 + n4;
	} else {
		c1 = 97 + n4,   c2 = 109 + n5,  c3 = 101 + n6,  c4 = 48 + n5;
	}
	char c[5] = {c1, c2, c3, c4, ''};
	prozsPid = GetProcessIDFromName(strcat(c, ".exe")); //取得pid
} else {
	//以下为7.2版本之前的逻辑
	n4 = n3 % 3 + 3, n5 = n3 % 4 + 4;
	char str[4];
	str[0] = 'p';
	if (n3 % 2 != 0)
		str[1] = n4 + 102, str[2] = n5 + 98;
	else
		str[1] = n4 + 99,  str[2] = n5 + 106;
	str[3] = '';
	prozsPid = GetProcessIDFromName(strcat(str, ".exe"));
}
KillProcess(prozsPid);
KillProcess(GetProcessIDFromName("jfglzs.exe"));

其中还用到这个函数,贴一下,需要头文件tlhelp32.h

//https://blog.csdn.net/yanglx2022/article/details/46582629
DWORD GetProcessIDFromName(LPCSTR szName) {
	DWORD id = 0;       // 进程ID
	PROCESSENTRY32 pe;  // 进程信息
	pe.dwSize = sizeof(PROCESSENTRY32);
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 获取系统进程列表
	if (Process32First(hSnapshot, &pe)) {   // 返回系统中第一个进程的信息
		do {
			if (0 == _stricmp(pe.szExeFile, szName)) { // 不区分大小写比较
				id = pe.th32ProcessID;
				break;
			}
		} while (Process32Next(hSnapshot, &pe));     // 下一个进程
	}
	CloseHandle(hSnapshot);     // 删除快照
	return id;
}

不过有个问题:在半夜12点前启动机房助手,过了12点再启动本程序,算出的进程名为新一天的。解决办法也不难:重启电脑,或者临时改系统时间为机房助手启动时的时间,在这个时间杀掉进程即可。

解除一些系统工具的禁用

原理是改注册表键值,到时候我具体写文章来叙述,现在可以在源码里找到注册表路径。失败的话,用管理员权限运行,也有可能是杀毒软件拦截。
重启资源管理器,就是先杀掉explorer.exe再用命令行启动,如果explorer.exe被关掉,但再也没有启动,请解除cmd限制后再点击一次按钮试试
需要说明的是,解除USB的限制是改了机房助手的注册表,防止蓝屏,而不是改系统的注册表键值(机房助手也说明了嘛,非注册表法)

黑屏或者全屏广播怎么办

用Timer每秒计时,然后判断鼠标是否在屏幕左上角,如果在,就弹出提示框,可以最小化当前窗口

实现:(写在Timer的事件中)

//写在前面
POINT p;
//检测鼠标左上角事件
GetCursorPos(&p);
if (p.x == 0 && p.y == 0) {
	HWND topHwnd = GetForegroundWindow();
	if (MessageBox(hwnd,"检测到了鼠标位置变化!是否最小化置顶窗口?", "实时监测", MB_YESNO | MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST) == IDYES) {
		ShowWindow(topHwnd, SW_MINIMIZE);
	}
}

极域会有键盘锁,这个目前没有做实现。解决办法,可以直接杀掉进程,或者用这个软件破解极域电子教室,老师再也控制不了我了!极域电子教室防控制
当然,我们软件的优势是,可以随时恢复黑屏安静(在任务栏)

顺便说说

学生机房管理助手有软件黑名单,窗口名或程序名包含“极域”就会蓝屏,因此窗口标题用这串。
因为VC++太大了,装不起,本来想要MFC的,就只能用dev c++开发win32程序了,用win32也有个优势是大家重编译也方便。
MFC的按钮控件当获得焦点(用鼠标按住,然后移开按钮,再松开鼠标)会有蓝色边框,而win32的控件不会有这种效果,如果设置BS_DEFPUSHBUTTON样式,则会有蓝框,但是一直有蓝框,不是CButton的效果,想问问大家,怎么实现这种效果?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号