慎用
#include<bits/stdc++.h>
#include<windows.h>
#include<tlhelp32.h>
#include<tchar.h>
#include<ShellAPI.h>
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string>
#include<conio.h>
using namespace std;
void color (int a) {//颜色函数
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), a);
}
string jylj = "C:\\Program Files (x86)\\Mythware\\极域课堂管理系统软件v6.0 2020豪华版\\StudentMain.exe";
void gqhf(bool ng){
char y = '"';
const char *s;
char ans[109];
string t = jylj;
ans[0] = '"';
for(int i = 0;i < t.size();i++){
ans[i+1] = t[i];
}
ans[t.size()+1] = '"';
s = ans;
if(ng == 1){
system("taskkill /f /im StudentMain.exe /t");
}
else{
system(s);
}
}
typedef struct tagWNDINFO
{
DWORD dwProcessId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;
//枚举窗口过程
static BOOL CALLBACK EnumProc(HWND hWnd, LPARAM lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if (dwProcessId == pInfo->dwProcessId)
{
pInfo->hWnd = hWnd;
return FALSE;
}
return TRUE;
}
//获取主窗口句柄
static HWND GetProcessMainWnd()
{
DWORD dwProcessId=::GetCurrentProcessId();
WNDINFO wi;
wi.dwProcessId = dwProcessId;
wi.hWnd = NULL;
EnumWindows(EnumProc, (LPARAM)&wi);
return wi.hWnd;
}
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);
void fz(string in)
{
if(!OpenClipboard(NULL)|| !EmptyClipboard())
{
printf("打开或清空剪切板出错!\n");
return;
}
HGLOBAL hMen;
hMen = GlobalAlloc(GMEM_MOVEABLE, ((strlen(in.c_str())+1)*sizeof(TCHAR)));
if (!hMen)
{
printf("分配全局内存出错!\n");
CloseClipboard();
return;
}
LPSTR lpStr = (LPSTR)GlobalLock(hMen);
memcpy(lpStr,in.c_str(), ((strlen(in.c_str()))*sizeof(TCHAR)));
lpStr[strlen(in.c_str())] = (TCHAR)0;
GlobalUnlock(hMen);
SetClipboardData(CF_TEXT, hMen);
CloseClipboard();
return;
}
void EnableDebugPriv(){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, NULL);
CloseHandle(hToken);
}
void hide()
{
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(hout, &cursor_info);
}
bool getProcess(const char *procressName) //此函数进程名不区分大小写
{
char pName[MAX_PATH]; //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
strcpy(pName,procressName); //拷贝数组
CharLowerBuff(pName,MAX_PATH); //将名称转换为小写
PROCESSENTRY32 currentProcess; //存放快照进程信息的一个结构体
currentProcess.dwSize = sizeof(currentProcess); //在使用这个结构之前,先设置它的大小
HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
if (hProcess == INVALID_HANDLE_VALUE)
{
return false;
}
bool bMore=Process32First(hProcess,¤tProcess); //获取第一个进程信息
while(bMore)
{
CharLowerBuff(currentProcess.szExeFile,MAX_PATH); //将进程名转换为小写
if (strcmp(currentProcess.szExeFile,pName)==0) //比较是否存在此进程
{
CloseHandle(hProcess); //清除hProcess句柄
return true;
}
bMore=Process32Next(hProcess,¤tProcess); //遍历下一个
}
CloseHandle(hProcess); //清除hProcess句柄
return false;
}
bool IsProcessRunAsAdmin()
{
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
BOOL b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);
if(b)
{
CheckTokenMembership(NULL, AdministratorsGroup, &b);
FreeSid(AdministratorsGroup);
}
return b == TRUE;
}
short GetAdmin(LPCSTR Param, int Showcmd)
{
if (IsProcessRunAsAdmin())
return 0;
TCHAR Path[MAX_PATH];
ZeroMemory(Path, MAX_PATH);
::GetModuleFileName(NULL, Path, MAX_PATH); //获取程序路径
HINSTANCE res;
res = ShellExecute(NULL, "runas", Path, Param, NULL, Showcmd);
return 0;
}
int main()
{
HWND hWnd = ::GetForegroundWindow();
if(getProcess("StudentMain.exe")){
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
cout<<"检测到极域正在运行,按b以开启极域模式,按c取消";
if(GetAsyncKeyState('B')){
system("cls");
Sleep(100);
hide();
bool yx = 0;
bool xd = 1;
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
cin.clear();
if(getProcess("StudentMain.exe")){
cout<<"极域正在运行!\n";
color(4);
yx = 1;
}
else{
cout<<"极域未运行。\n";
color(10);
yx = 0;
}
cout<<"[1] 杀死极域\n[2] 运行极域\n[3] 重启极域\n[4] 复制极域万能密码\n[5] 挂起与恢复极域\n[6] 最小化本窗口\n[7] 最小化置顶窗口\n[8] 打开任务管理器\n[9] 退出此模式\n[q] 打开/关闭 屏幕键盘\n";
if(GetAsyncKeyState('1')){
if(yx == 0){
cout<<"极域未运行!\n";
}
else{
Sleep(100);
cout<<"普通taskkill杀极域输入1,ntsd强制杀极域输入(需要确保包含C:/windows/ntsd.exe文件)2:";
if(GetAsyncKeyState('1')){
system("taskkill /F /IM StudentMain.exe /T");
}
else if(GetAsyncKeyState('2')){
system("./ntsd.exe -c q -pn studentmain.exe");
}
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"杀死失败!\n";
}
else{
cout<<"杀死成功!\n";
cout<<"按1继续";
Sleep(10);
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
Sleep(10);
}
else if(GetAsyncKeyState('2')){
if(yx == 1){
cout<<"极域已运行!\n";
}
else{
gqhf(0);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"运行成功!\n";
Sleep(1000);
}
else{
cout<<"运行失败!";
cout<<"按1继续";
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
Sleep(10);
}
else if(GetAsyncKeyState('3')){
if(yx == 0){
cout<<"极域未运行!\n";
}
else{
gqhf(1);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"杀死失败!\n";
Sleep(1000);
}
else{
cout<<"杀死成功!\n";
gqhf(0);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"运行成功!\n";
Sleep(1000);
}
else{
cout<<"运行失败!\n";
cout<<"按1继续";
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
}
Sleep(10);
}
else if(GetAsyncKeyState('4')){
fz("mythware_super_password");
cout<<"密码已复制!\n";
Sleep(10);
}
else if(GetAsyncKeyState('5')){
cout<<"挂起输入1,恢复输入2";
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
if(GetAsyncKeyState('1')){
gqhf(1);
break;
}
if(GetAsyncKeyState('2')){
gqhf(0);
break;
}
}
Sleep(10);
}
else if(GetAsyncKeyState('6')){
if(xd){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
xd = 0;
}
else{
ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
xd = 1;
}
Sleep(100);
}
else if(GetAsyncKeyState('7')){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
Sleep(100);
HWND jy = GetForegroundWindow();
ShowWindow(jy,SW_MINIMIZE);
Sleep(100);
cout<<"恢复输入0";
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
if(GetAsyncKeyState('0')){
ShowWindow(jy,SW_MAXIMIZE);
break;
}
else if(GetAsyncKeyState('6')){
if(xd){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
xd = 0;
}
else{
ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
xd = 1;
}
Sleep(10);
}
}
Sleep(10);
//ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
}
else if(GetAsyncKeyState('8')){
system("C:\\Windows\\System32\\Taskmgr.exe");
Sleep(10);
}
else if(GetAsyncKeyState('9')){
break;
}
else if(GetAsyncKeyState('Q')){
if(getProcess("osk.exe")){
system("taskkill /f /im osk.exe /t");
}
system("start C:\\Windows\\System32\\osk.exe");
Sleep(100);
}
Sleep(10);
system("cls");
}
cout<<"已退出!\n";
}
else if(GetAsyncKeyState('C')){
break;
}
Sleep(10);
system("cls");
}
}
system("cls");
bool sz_exe = 1;
bool jy = 1;
if(IsProcessRunAsAdmin() == 0){
cout<<"获取管理员权限失败!\n请用管理员模式运行,否则可能无法关闭或打开一些特殊进程!\n";
Sleep(3000);
}
else{
cout<<"管理员权限获取成功!\n";
}
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
string name;
string jg;
int in;
cout<<"进程管理器 V3.1.2\n1.关闭进程\n2.运行进程\n3.重启进程\n4.进程删重\n5.设置\n";
if(jy){
cout<<"6.极域模式\n";
}
cout<<"Input:";
cin>>in;
if(in == 1){
cout<<"需关闭进程名:";
if(sz_exe == 1){
cout<<"(需要加上.exe或其他):";
}
else{
cout<<"(不需要加上.exe,将自动补全):";
}
cin>>name;
if(sz_exe == 0){
name += ".exe";
}
if(!getProcess(name.c_str())){
cout<<"此程序未运行!\n";
}
else{
jg = "taskkill /F /IM " + name + " /T";
const char* cname = jg.c_str();
system(cname);
Sleep(100);
if(getProcess(name.c_str())){
cout<<"杀死失败!\n";
}
else{
cout<<"杀死成功!\n";
}
}
}
else if(in == 2){
cout<<"需运行进程名:";
if(sz_exe == 1){
cout<<"(需要加上.exe或其他):";
}
else{
cout<<"(不需要加上.exe,将自动补全):";
}
cin>>name;
if(sz_exe == 0){
name += ".exe";
}
if(getProcess(name.c_str())){
cout<<"此程序已运行!\n";
}
else{
jg = "start " + name;
const char* cname = jg.c_str();
system(cname);
Sleep(100);
if(!getProcess(name.c_str())){
cout<<"运行失败!\n";
}
else{
cout<<"运行成功!\n";
}
}
}
else if(in == 3){
cout<<"需重启进程名:";
if(sz_exe == 1){
cout<<"(需要加上.exe或其他):";
}
else{
cout<<"(不需要加上.exe,将自动补全):";
}
cin>>name;
if(sz_exe == 0){
name += ".exe";
}
if(!getProcess(name.c_str())){
cout<<"此程序未运行!\n";
}
else{
jg = "taskkill /F /IM " + name + " /T";
const char* cname = jg.c_str();
system(cname);
Sleep(100);
if(getProcess(name.c_str())){
cout<<"杀死失败!\n";
}
else{
cout<<"杀死成功!正在准备运行!\n";
jg = "start " + name;
const char* ccname = jg.c_str();
system(ccname);
Sleep(100);
if(!getProcess(name.c_str())){
cout<<"运行失败!\n";
}
else{
cout<<"运行成功!\n";
}
}
}
}
else if(in == 4){
cout<<"查重进程名:";
cin>>name;
if(sz_exe == 0){
name += ".exe";
}
if(!getProcess(name.c_str())){
cout<<"此程序未运行!\n";
}
else{
while(1){
jg = "./ntsd.exe -c q -pn " + name;
const char* cname = jg.c_str();
system(cname);
if(!getProcess(name.c_str())){
break;
}
}
cout<<"杀死成功!正在准备运行!\n";
jg = "start " + name;
const char* ccname = jg.c_str();
system(ccname);
Sleep(100);
if(!getProcess(name.c_str())){
cout<<"运行失败!\n";
}
else{
cout<<"运行成功!\n查重成功!\n";
}
}
}
else if(in == 5){
if(sz_exe){
cout<<"是否默认加上.exe(是输入1,否则输入0):";
cin>>sz_exe;
sz_exe = !sz_exe;
}
else{
cout<<"是否默认不加上.exe(是输入1,否则输入0):";
cin>>sz_exe;
}
if(jy){
cout<<"是否默认不显示极域模式(包括设置内),但可以输入6(或设置的2)仍可以打开(是输入1,否则输入0):";
cin>>jy;
jy = !jy;
}
else{
cout<<"是否默认显示极域模式(包括设置内)(是输入1,否则输入0):";
cin>>jy;
}
cout<<"是否更改极域路径(是输入1):";
string a;
cin>>a;
if(a == "1"){
cout<<"当前路径:";
cout<<jylj<<endl;
cout<<"请输入新路径(斜杠需使用双斜杠):";
cin.ignore(numeric_limits<streamsize>::max(),'\n');
getline(cin,jylj);
cout<<"你输入的路径是:"<<jylj<<endl;
Sleep(1000);
}
}
else if(in == 6){
system("cls");
Sleep(100);
hide();
bool yx = 0;
bool xd = 1;
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
cin.clear();
if(getProcess("StudentMain.exe")){
cout<<"极域正在运行!\n";
color(4);
yx = 1;
}
else{
cout<<"极域未运行。\n";
color(10);
yx = 0;
}
cout<<"[1] 杀死极域\n[2] 运行极域\n[3] 重启极域\n[4] 复制极域万能密码\n[5] 挂起与恢复极域\n[6] 最小化本窗口\n[7] 最小化置顶窗口\n[8] 打开任务管理器\n[9] 退出此模式\n[q] 打开/关闭 屏幕键盘\n";
if(GetAsyncKeyState('1')){
if(yx == 0){
cout<<"极域未运行!\n";
}
else{
Sleep(100);
cout<<"普通taskkill杀极域输入1,ntsd强制杀极域输入(需要确保包含C:/windows/ntsd.exe文件)2:";
if(GetAsyncKeyState('1')){
system("taskkill /F /IM StudentMain.exe /T");
}
else if(GetAsyncKeyState('2')){
system("./ntsd.exe -c q -pn studentmain.exe");
}
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"杀死失败!\n";
}
else{
cout<<"杀死成功!\n";
cout<<"按1继续";
Sleep(10);
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
Sleep(10);
}
else if(GetAsyncKeyState('2')){
if(yx == 1){
cout<<"极域已运行!\n";
}
else{
gqhf(0);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"运行成功!\n";
Sleep(1000);
}
else{
cout<<"运行失败!";
cout<<"按1继续";
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
Sleep(10);
}
else if(GetAsyncKeyState('3')){
if(yx == 0){
cout<<"极域未运行!\n";
}
else{
gqhf(1);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"杀死失败!\n";
Sleep(1000);
}
else{
cout<<"杀死成功!\n";
gqhf(0);
Sleep(100);
if(getProcess("StudentMain.exe")){
cout<<"运行成功!\n";
Sleep(1000);
}
else{
cout<<"运行失败!\n";
cout<<"按1继续";
while(!GetAsyncKeyState('1')){}
Sleep(10);
}
}
}
Sleep(10);
}
else if(GetAsyncKeyState('4')){
fz("mythware_super_password");
cout<<"密码已复制!\n";
Sleep(10);
}
else if(GetAsyncKeyState('5')){
cout<<"挂起输入1,恢复输入2";
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
if(GetAsyncKeyState('1')){
gqhf(1);
break;
}
if(GetAsyncKeyState('2')){
gqhf(0);
break;
}
}
Sleep(10);
}
else if(GetAsyncKeyState('6')){
if(xd){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
xd = 0;
}
else{
ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
xd = 1;
}
Sleep(100);
}
else if(GetAsyncKeyState('7')){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
Sleep(100);
HWND jy = GetForegroundWindow();
ShowWindow(jy,SW_MINIMIZE);
Sleep(100);
cout<<"恢复输入0";
while(1){
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
if(GetAsyncKeyState('0')){
ShowWindow(jy,SW_MAXIMIZE);
break;
}
else if(GetAsyncKeyState('6')){
if(xd){
ShowWindow(GetProcessMainWnd(),SW_MINIMIZE);
xd = 0;
}
else{
ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
xd = 1;
}
Sleep(10);
}
}
Sleep(10);
//ShowWindow(GetProcessMainWnd(),SW_MAXIMIZE);
}
else if(GetAsyncKeyState('8')){
system("C:\\Windows\\System32\\Taskmgr.exe");
Sleep(10);
}
else if(GetAsyncKeyState('9')){
break;
}
else if(GetAsyncKeyState('Q')){
if(getProcess("osk.exe")){
system("taskkill /f /im osk.exe /t");
}
system("start C:\\Windows\\System32\\osk.exe");
Sleep(100);
}
Sleep(10);
system("cls");
}
cout<<"已退出!\n";
}
system("pause");
system("cls");
}
return 0;
}