/*gf25051小黄原创代码专属水印*/
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <sddl.h>
#include <aclapi.h>
using namespace std;

int killCount = 0;
bool keyStates[256];
const char* STUDENT_MAIN_PATH = "C:\\Program Files (x86)\\Mythware\\极域课堂管理系统软件V6.0 2016 豪华版\\StudentMain.exe";
const char* LOG_FILE_PATH = "killjoy_log.txt";

bool IsRunAsAdmin() {
    BOOL bIsAdmin = FALSE;
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
    PSID pAdministratorSid = NULL;

    do {
        if (!AllocateAndInitializeSid(&NtAuthority, 2,
            SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
            0, 0, 0, 0, 0, 0, &pAdministratorSid)) {
            break;
        }
        if (!CheckTokenMembership(NULL, pAdministratorSid, &bIsAdmin)) {
            bIsAdmin = FALSE;
        }
    } while (false);

    if (pAdministratorSid) {
        FreeSid(pAdministratorSid);
        pAdministratorSid = NULL;
    }
    return (bool)bIsAdmin;
}

void RequestAdminPrivileges() {
    char szPath[MAX_PATH] = {0};
    if (GetModuleFileNameA(NULL, szPath, MAX_PATH)) {
        HINSTANCE hResult = ShellExecuteA(NULL, "runas", szPath, NULL, NULL, SW_SHOWNORMAL);
        if (hResult <= (HINSTANCE)32) {
            if (GetLastError() == ERROR_CANCELLED) {
                cout << "用户拒绝了管理员权限请求,程序可能无法正常工作!" << endl;
                cout << "按任意键继续(某些功能可能受限)..." << endl;
                system("pause >nul");
            }
        } else {
            exit(0);
        }
    }
}

void SafeShowConsole(bool show) {
    HWND hwnd = GetConsoleWindow();
    if (hwnd != NULL) {
        ShowWindow(hwnd, show ? SW_SHOW : SW_HIDE);
    }
}

bool IsFileWritable(const char* path) {
    FILE* fp = fopen(path, "a");
    if (fp) {
        fclose(fp);
        return true;
    }
    return false;
}

void checkGlobalKeys() {
    if ((GetAsyncKeyState('B') & 0x8000) && !keyStates['B']) {
        killCount++;
        system("taskkill /F /IM StudentMain.exe >nul 2>&1");
        if (killCount == 1) cout << endl;
        cout << "     成功肘击极域!!!" << endl;
        keyStates['B'] = true;
    } else if (!(GetAsyncKeyState('B') & 0x8000)) {
        keyStates['B'] = false;
    }

    if ((GetAsyncKeyState('D') & 0x8000) && !keyStates['D']) {
        system("start taskmgr.exe >nul 2>&1");
        keyStates['D'] = true;
    } else if (!(GetAsyncKeyState('D') & 0x8000)) {
        keyStates['D'] = false;
    }

    if ((GetAsyncKeyState('1') & 0x8000) && !keyStates['1']) {
        system("start https://www.bcoi.cn >nul 2>&1");
        keyStates['1'] = true;
    } else if (!(GetAsyncKeyState('1') & 0x8000)) {
        keyStates['1'] = false;
    }

    if ((GetAsyncKeyState('2') & 0x8000) && !keyStates['2']) {
        if (IsFileWritable(LOG_FILE_PATH)) {
            system("time /t >> killjoy_log.txt 2>&1");
            cout << "     已记录当前时间到killjoy_log.txt" << endl;
        } else {
            cout << "     错误:无权限写入killjoy_log.txt!" << endl;
        }
        keyStates['2'] = true;
    } else if (!(GetAsyncKeyState('2') & 0x8000)) {
        keyStates['2'] = false;
    }

    if ((GetAsyncKeyState('3') & 0x8000) && !keyStates['3']) {
        system("start https://play.mc.js.cool/1.8/n >nul 2>&1");
        keyStates['3'] = true;
    } else if (!(GetAsyncKeyState('3') & 0x8000)) {
        keyStates['3'] = false;
    }

    if ((GetAsyncKeyState('4') & 0x8000) && !keyStates['4']) {
        system("start https://www.dogod.io >nul 2>&1");
        keyStates['4'] = true;
    } else if (!(GetAsyncKeyState('4') & 0x8000)) {
        keyStates['4'] = false;
    }

    if ((GetAsyncKeyState('5') & 0x8000) && !keyStates['5']) {
        system("start https://slowroads.io/ >nul 2>&1");
        keyStates['5'] = true;
    } else if (!(GetAsyncKeyState('5') & 0x8000)) {
        keyStates['5'] = false;
    }

    if ((GetAsyncKeyState('6') & 0x8000) && !keyStates['6']) {
        system("start cmd >nul 2>&1");
        keyStates['6'] = true;
    } else if (!(GetAsyncKeyState('6') & 0x8000)) {
        keyStates['6'] = false;
    }

    if ((GetAsyncKeyState('7') & 0x8000) && !keyStates['7']) {
        system("start https://www.bcoi.cn/d/gfhd/user/507 >nul 2>&1");
        keyStates['7'] = true;
    } else if (!(GetAsyncKeyState('7') & 0x8000)) {
        keyStates['7'] = false;
    }

    if ((GetAsyncKeyState('8') & 0x8000) && !keyStates['8']) {
        system("start https://www.bcoi.cn/d/gfhd/user/616 >nul 2>&1");
        keyStates['8'] = true;
    } else if (!(GetAsyncKeyState('8') & 0x8000)) {
        keyStates['8'] = false;
    }

    if ((GetAsyncKeyState('9') & 0x8000) && !keyStates['9']) {
        system("start https://xg9.cn/my/4qVWxG >nul 2>&1");
        keyStates['9'] = true;
    } else if (!(GetAsyncKeyState('9') & 0x8000)) {
        keyStates['9'] = false;
    }
    
    if ((GetAsyncKeyState('H') & 0x8000) && !keyStates['H']) {
        cout<<endl<<endl;
        cout << "后台全局监听中,按以下按键执行操作:\n\n";
    	cout << "B: 结束极域(仅控屏) | C: 结束极域(全部+禁用服务) | X: 恢复极域(已修复)"<<endl << endl;
    	cout << "1-9: 打开对应网页/程序 | 按ESC退出程序" <<endl<< endl;
    	cout<<"1.打开bcoi                    7.gf25051小黄主页"<<endl<<endl;
    	cout<<"2.显示时间                    8.gf25152鼠鼠主页"<<endl<<endl;
    	cout<<"3.我的世界                    9.游戏总结"<<endl<<endl;
    	cout<<"4.抡棒作战                    Q.删掉极域!!!!!!!!!!! (需要管理员权限)"<<endl<<endl;
		cout<<"5.Slowroads                   P:后台运行杀手(后台运行更隐蔽) | S:恢复控制台显示"<<endl<<endl;
    	cout<<"6.命令提示符                  ESC:退出杀手"<<endl<<endl;
		cout<<"D:任务管理器                  H:显示对应网页/程序"<<endl<<endl;
        keyStates['H'] = true;
    } else if (!(GetAsyncKeyState('H') & 0x8000)) {
        keyStates['H'] = false;
    }

    if ((GetAsyncKeyState('C') & 0x8000) && !keyStates['C']) {
        system("sc stop JYService >nul 2>&1");
        system("sc config JYService start= disabled >nul 2>&1");
        system("taskkill /im MythwareService.exe /f >nul 2>&1");
        system("taskkill /im StudentService_Proxy.exe /f >nul 2>&1");
        system("taskkill /im StudentMain.exe /f >nul 2>&1");
        system("taskkill /im XStudent.exe /f >nul 2>&1");
        system("taskkill /im XTRudent.exe /f >nul 2>&1");
        system("taskkill /im GATESRV.exe /f >nul 2>&1");
        system("taskkill /im DispcapHelper.exe /f >nul 2>&1");
        system("taskkill /im MasterHelper.exe /f >nul 2>&1");
        system("taskkill /im ProcHelper64.exe /f >nul 2>&1");
        system("taskkill /im Student.exe /f >nul 2>&1");
        system("taskkill /im JYService.exe /f >nul 2>&1");
        system("taskkill /im jyclass.exe /f >nul 2>&1");
        cout << "     成功结束所有极域进程并禁用服务!" << endl;
        keyStates['C'] = true;
    } else if (!(GetAsyncKeyState('C') & 0x8000)) {
        keyStates['C'] = false;
    }

    if ((GetAsyncKeyState('Q') & 0x8000) && !keyStates['Q']) {
        cout << "     尝试删除极域文件夹!(需要管理员权限)" << endl;
        system("sc stop JYService >nul 2>&1");
        system("sc config JYService start= disabled >nul 2>&1");
        system("taskkill /im MythwareService.exe /f >nul 2>&1");
        system("taskkill /im StudentService_Proxy.exe /f >nul 2>&1");
        system("taskkill /im StudentMain.exe /f >nul 2>&1");
        system("taskkill /im XStudent.exe /f >nul 2>&1");
        system("taskkill /im XTRudent.exe /f >nul 2>&1");
        system("taskkill /im GATESRV.exe /f >nul 2>&1");
        system("taskkill /im DispcapHelper.exe /f >nul 2>&1");
        system("taskkill /im MasterHelper.exe /f >nul 2>&1");
        system("taskkill /im ProcHelper64.exe /f >nul 2>&1");
        system("taskkill /im Student.exe /f >nul 2>&1");
        system("taskkill /im JYService.exe /f >nul 2>&1");
        system("taskkill /im jyclass.exe /f >nul 2>&1");
        system("rmdir /s /q \"C:\\Program Files (x86)\\Mythware\" >nul 2>&1");
        system("del /f /s /q \"C:\\Program Files (x86)\\Mythware\\*.*\" >nul 2>&1");
        cout << "     极域进程结束+文件夹删除完成!(失败请手动操作)" << endl;
        keyStates['Q'] = true;
    } else if (!(GetAsyncKeyState('Q') & 0x8000)) {
        keyStates['Q'] = false;
    }

    if ((GetAsyncKeyState('P') & 0x8000) && !keyStates['P']) {
        SafeShowConsole(false);
        cout << "     控制台已隐藏(按S恢复)" << endl;
        fflush(stdout);
        keyStates['P'] = true;
    } else if (!(GetAsyncKeyState('P') & 0x8000)) {
        keyStates['P'] = false;
    }

    if ((GetAsyncKeyState('S') & 0x8000) && !keyStates['S']) {
        SafeShowConsole(true);
        keyStates['S'] = true;
    } else if (!(GetAsyncKeyState('S') & 0x8000)) {
        keyStates['S'] = false;
    }

    if ((GetAsyncKeyState('X') & 0x8000) && !keyStates['X']) {
        char startCmd[MAX_PATH * 2] = {0};
        const char* fmt = "start \"\" \"%s\"";
        int ret = _snprintf(startCmd, sizeof(startCmd) - 1, fmt, STUDENT_MAIN_PATH);
        startCmd[sizeof(startCmd) - 1] = '\0';

        if (ret < 0) {
            cout << "     启动极域失败!路径过长,超出缓冲区限制!" << endl;
            keyStates['X'] = true;
        } else {
            int result = system(startCmd);
            if (result == 0) {
                cout << "     启动极域客户端成功!" << endl;
            } else {
                cout << "     启动极域失败!请检查路径是否正确:" << STUDENT_MAIN_PATH << endl;
            }
            keyStates['X'] = true;
        }
    } else if (!(GetAsyncKeyState('X') & 0x8000)) {
        keyStates['X'] = false;
    }
}

int main() {
    memset(keyStates, 0, sizeof(keyStates));

    bool isAdmin = IsRunAsAdmin();
    if (!isAdmin) {
        cout << "================================" << endl;
        cout << "  全能工具箱v12.0Pro(万能版) - 权限检查" << endl;
        cout << "================================" << endl << endl;
        cout << "检测到程序未以管理员权限运行" << endl;
        cout << "正在请求管理员权限..." << endl;
        cout << "请在弹出的UAC窗口中点击【是】" << endl;
        cout << "如果点击【否】,部分功能可能受限" << endl << endl;
        cout << "正在请求权限,请稍候..." << endl;

        Sleep(2000);
        RequestAdminPrivileges();

        isAdmin = IsRunAsAdmin();
        system("cls");
        cout << endl << "警告:程序将在受限模式下运行!" << endl;
        cout << "部分需要管理员权限的功能可能无法使用。" << endl;
        system("pause >nul");
        system("cls");
    }

    system("title 全能工具箱v12.0Pro(万能版) - 全局监听模式");
    cout << "全能工具箱v12.0Pro(万能版)已启动!\n\n";
    cout << (isAdmin ? "当前运行权限:管理员权限 √\n\n" : "当前运行权限:标准用户权限 ×\n\n");
    if (!isAdmin) {
        cout << "提示:删除极域、禁用服务等功能需要管理员权限\n\n";
    }

    cout << "后台全局监听中,按以下按键执行操作:\n\n";
    cout << "B: 结束极域(仅控屏) | C: 结束极域(全部+禁用服务) | X: 恢复极域(已修复)"<<endl << endl;
    cout << "1-9: 打开对应网页/程序 | 按ESC退出程序" <<endl<< endl;
    cout<<"1.打开bcoi                    7.gf25051小黄主页"<<endl<<endl;
    cout<<"2.显示时间                    8.gf25152鼠鼠主页"<<endl<<endl;
    cout<<"3.我的世界                    9.游戏总结"<<endl<<endl;
    cout<<"4.抡棒作战                    Q.删掉极域!!!!!!!!!!! (需要管理员权限)"<<endl<<endl;
    cout<<"5.Slowroads                   P:后台运行杀手(后台运行更隐蔽) | S:恢复控制台显示"<<endl<<endl;
    cout<<"6.命令提示符                  ESC:退出杀手"<<endl<<endl;
	cout<<"D:任务管理器                  H:显示对应网页/程序"<<endl<<endl;

    while (true) {
        checkGlobalKeys();
        if (GetAsyncKeyState(VK_ESCAPE) & 0x8000) {
            SafeShowConsole(true);
            cout << "\n程序已退出,共肘击极域 " << killCount << " 次" << endl;
            fflush(stdout);
            Sleep(2000);
            break;
        }
        Sleep(50);
    }

    cout << "\n按任意键关闭窗口..." << endl;
    system("pause >nul");
    return 0;
}
/*gf25051小黄原创代码专属水印*/