JiYuTrainer:极域电子教室反控制系统深度解析与实战指南

【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 【免费下载链接】JiYuTrainer 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer

JiYuTrainer是一款针对极域电子教室(Mythware)控制系统的开源反制工具,通过创新的Windows内核驱动与用户态钩子技术,实现对教学控制软件的精准破解。该项目采用C++开发,集成了驱动层、钩子层、UI层和核心逻辑层四层架构,为系统管理员和开发者提供了深入理解Windows系统编程和反控制技术的绝佳案例。

技术挑战:极域电子教室控制机制分析

极域电子教室作为广泛应用的课堂管理软件,通过多层次技术实现对客户端电脑的全面控制。其核心技术挑战主要体现在以下四个方面:

进程保护与监控机制

StudentMain.exe作为极域客户端核心进程,采用驱动级保护技术防止被终止。该进程通过TDFileFilter.sys和TDNetFilter.sys等内核驱动实现文件系统过滤和网络监控,普通用户权限无法直接干预。

屏幕广播控制技术

教师端通过全屏广播技术完全接管学生端显示输出,窗口置顶、屏幕锁定等机制使得学生无法进行任何操作。这种技术基于Windows GDI和DirectX图形接口,对窗口消息进行深度拦截。

网络与设备访问限制

通过内核级过滤驱动限制USB设备访问和网络通信,防止学生绕过控制进行外部数据传输。这种驱动级限制使得传统应用层解决方案难以奏效。

反注入与自我保护

StudentMain.exe具备反DLL注入保护,监控进程内存空间异常,检测到外部注入尝试时会触发自我保护机制,甚至导致系统蓝屏。

创新架构:四层协同破解方案设计

JiYuTrainer采用模块化设计,通过四个层次协同工作,构建完整的反控制系统。

驱动层:内核级权限控制

驱动模块位于JiYuTrainerDriver目录,通过Windows内核驱动实现系统级操作权限。核心文件Driver.c实现了设备对象创建和IRP处理机制:

NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegPath)
{
    // 创建设备对象
    NTSTATUS ntStatus = IoCreateDevice(
        pDriverObject,
        0, 
        &DeviceObjectName,
        FILE_DEVICE_UNKNOWN, 
        FILE_DEVICE_SECURE_OPEN, 
        FALSE,
        &deviceObject);
    
    // 注册IRP处理函数
    pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = IOControlDispatch;
    
    // 初始化进程监控和保护
    KxPsMonitorInit();
    KxInitProtectProcess();
}

驱动层提供的关键功能包括:

  1. 进程控制:通过内核API直接操作进程对象
  2. 文件过滤驱动卸载:移除极域的限制驱动
  3. 系统调用拦截:Hook关键SSDT函数防止监控

钩子层:API拦截与窗口控制

位于JiYuTrainerHooks目录的钩子模块基于mhook库实现,通过修改目标进程的导入地址表(IAT)实现API拦截:

// 窗口过程钩子实现
WNDPROC jiYuWndProc;
WNDPROC jiYuTDDeskWndProc;
list<HWND> jiYuWnds;

// 关键API拦截点
MHOOK_TRAMPOLINE trampoline_CreateWindowExW;
MHOOK_TRAMPOLINE trampoline_SetWindowPos;
MHOOK_TRAMPOLINE trampoline_ShowWindow;

钩子层主要拦截以下API:

  • 窗口创建:CreateWindowExW,修改窗口样式和位置
  • 窗口显示:ShowWindow,控制全屏广播显示状态
  • 窗口定位:SetWindowPos,防止窗口置顶
  • 消息处理:窗口过程钩子,过滤控制消息

用户界面层:现代化交互体验

JiYuTrainerUI采用Sciter引擎构建HTML/CSS/JavaScript界面,实现原生应用性能与Web开发灵活性的完美结合。界面设计遵循以下原则:

  1. 状态可视化:实时显示StudentMain.exe进程状态
  2. 一键操作:简化破解流程,降低使用门槛
  3. 配置管理:提供高级设置选项,支持自定义破解策略

JiYuTrainer主界面展示绿色控制面板和状态信息

如图显示,主界面采用绿色主题设计,中央状态指示器明确显示"已控制极域电子教室 已为您解锁极域电子教室"的状态信息,底部五个功能按钮提供完整的操作控制。

核心逻辑层:业务流程调度

TrainerWorker类作为业务核心,位于JiYuTrainer目录,负责协调各模块工作:

class TrainerWorker
{
public:
    virtual DWORD GetStudentMainPid() { return 0; }
    virtual bool KillProcess(DWORD pid, bool force){ return false; }
    virtual bool Rerun(bool autoWork = false) { return false; }
    virtual bool Inject() { return false; }
};

核心功能包括:

  1. 进程定位:遍历系统进程查找StudentMain.exe
  2. DLL注入:远程线程注入JiYuTrainerHooks.dll
  3. 状态管理:监控破解状态并更新UI
  4. 错误处理:异常恢复和重试机制

技术实现:关键功能深度解析

进程定位与监控机制

JiYuTrainer通过遍历系统进程列表精准定位目标进程,支持多种极域版本路径识别:

bool TrainerWorkerInternal::LocateStudentMain(DWORD *outFirstPid)
{
    // 遍历进程查找StudentMain.exe
    if (p->ImageName.Length && 
        StrEqual(p->ImageName.Buffer, L"StudentMain.exe"))
    {
        _StudentMainPid = (DWORD)p->ProcessId;
        return true;
    }
}

支持的路径包括:

  • C:\Program Files\Mythware\极域课堂管理系统软件V6.0 2016 豪华版\
  • C:\Program Files (x86)\Mythware\e-Learning Class\
  • C:\e-Learning Class\

远程DLL注入技术

通过CreateRemoteThread和VirtualAllocEx实现安全注入:

bool TrainerWorkerInternal::InjectDll(DWORD pid, LPCWSTR dllPath)
{
    // 打开目标进程
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    
    // 在目标进程中分配内存
    LPVOID pRemoteMemory = VirtualAllocEx(hProcess, NULL, 
                                         wcslen(dllPath) * 2 + 2, 
                                         MEM_COMMIT, PAGE_READWRITE);
    
    // 写入DLL路径
    WriteProcessMemory(hProcess, pRemoteMemory, 
                      dllPath, wcslen(dllPath) * 2 + 2, NULL);
    
    // 创建远程线程执行LoadLibrary
    HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
                                       (LPTHREAD_START_ROUTINE)LoadLibraryW,
                                       pRemoteMemory, 0, NULL);
}

窗口控制与屏幕广播破解

通过API钩子技术将全屏广播转换为窗口模式:

// 拦截SetWindowPos函数
BOOL WINAPI Hooked_SetWindowPos(HWND hWnd, HWND hWndInsertAfter, 
                                int X, int Y, int cx, int cy, UINT uFlags)
{
    // 检测极域广播窗口
    if (IsJiYuBroadcastWindow(hWnd))
    {
        // 修改窗口样式,取消全屏
        uFlags &= ~SWP_NOSIZE;
        cx = 800;  // 设置窗口大小
        cy = 600;
        hWndInsertAfter = HWND_NOTOPMOST;  // 取消置顶
    }
    
    // 调用原始函数
    return Original_SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, uFlags);
}

内核驱动通信机制

用户态程序通过DeviceIoControl与驱动层通信:

// 用户态调用驱动功能
bool SendControlToDriver(DWORD controlCode, LPVOID inputBuffer, DWORD inputSize)
{
    HANDLE hDevice = CreateFile(L"\\\\.\\JKRK", 
                               GENERIC_READ | GENERIC_WRITE, 
                               0, NULL, OPEN_EXISTING, 0, NULL);
    
    DWORD bytesReturned;
    DeviceIoControl(hDevice, controlCode, 
                    inputBuffer, inputSize, 
                    NULL, 0, &bytesReturned, NULL);
    
    CloseHandle(hDevice);
    return true;
}

实践应用:三步实现极域电子教室破解

第一步:环境准备与驱动加载

在受限环境下运行JiYuTrainer需要先解除U盘访问限制:

Windows命令行演示停止和删除TDFileFilter驱动的操作过程

如图显示,通过管理员权限的CMD执行以下命令:

sc stop TDFileFilter
sc delete TDFileFilter

这两个命令分别停止和删除极域的文件过滤驱动,解除U盘访问限制。对于网络限制,JiYuTrainer可自动卸载TDNetFilter.sys驱动,或使用PCHunter等工具手动卸载。

第二步:进程控制与DLL注入

运行JiYuTrainer.exe后,软件自动执行以下操作:

  1. 进程扫描:遍历系统进程,定位StudentMain.exe
  2. 驱动加载:加载JiYuTrainerDriver.sys内核驱动
  3. DLL注入:将JiYuTrainerHooks.dll注入目标进程
  4. API拦截:Hook关键Windows API函数

软件界面实时显示破解状态:

  • 红色状态:未检测到极域进程
  • 黄色状态:检测到进程但未破解
  • 绿色状态:成功破解并解锁控制

第三步:功能验证与高级配置

破解成功后,用户可进行以下验证:

  1. 屏幕广播测试:教师端发起全屏广播时,学生端显示为窗口模式
  2. 控制权限测试:尝试鼠标键盘操作,确认不受限制
  3. 网络访问测试:验证网络连接正常
  4. 文件传输测试:确认U盘和网络文件传输功能

高级配置选项包括:

  • 反监视模式:防止教师端屏幕监控
  • 防控制模式:阻止远程控制命令
  • 进程保护:防止StudentMain.exe被重新启动
  • 自定义窗口大小:调整广播窗口尺寸

技术亮点与创新价值

零依赖绿色部署

JiYuTrainer采用MemoryModule技术在内存中加载依赖DLL,无需安装运行库:

// 内存模块加载实现
HMEMORYMODULE hModule = MemoryLoadLibrary(data, size);
if (hModule)
{
    // 获取导出函数
    FARPROC proc = MemoryGetProcAddress(hModule, "ExportFunction");
    // 执行功能
    proc();
}

这种技术使得软件可以打包为单个可执行文件,简化部署过程。

智能进程识别与保护

软件支持多种极域版本自动识别,并采用进程PID过滤机制防止误操作:

bool TrainerWorkerInternal::CheckPidFilterd(DWORD pid)
{
    // 检查PID是否在过滤列表中
    for (auto& item : incorrectStudentMainPids)
    {
        if (item.pid == pid)
            return item.checked;
    }
    return false;
}

安全退出与清理机制

程序退出时自动卸载注入的DLL,恢复系统原状:

bool TrainerWorkerInternal::UnInject()
{
    if (_StudentMainPid > 4)
        return UnInjectDll(_StudentMainPid, L"JiYuTrainerHooks.dll");
    
    return true;
}

编译构建与二次开发指南

开发环境要求

  • 开发工具:Visual Studio 2019(推荐)
  • Windows SDK:Windows 10 SDK或更高版本
  • WDK:Windows Driver Kit 8或更高版本(驱动编译)
  • 平台:x86架构(兼容32位系统)

项目结构解析

JiYuTrainer/
├── JiYuTrainer/          # 主程序核心逻辑
├── JiYuTrainerDriver/    # 内核驱动模块
├── JiYuTrainerHooks/     # API钩子模块
├── JiYuTrainerUI/        # 用户界面模块
└── JiYuTrainerUpdater/   # 自动更新模块

构建步骤详解

  1. 解决方案配置:使用VS2019打开JiYuTrainer.sln
  2. 平台选择:设置为Release x86配置
  3. 生成顺序:先编译主程序,驱动模块已有预编译版本
  4. 输出文件:在Release目录获取JiYuTrainer.exe

第三方库集成

项目集成了多个优秀开源库:

  • mhook:API钩子实现,位于JiYuTrainerHooks/mhook-lib/
  • curl:网络通信功能,用于自动更新
  • MemoryModule:内存模块加载技术
  • XZip-XUnZip:压缩解压缩功能

常见问题排查与解决方案

问题一:杀毒软件误报

由于JiYuTrainer涉及进程注入和驱动加载,部分杀毒软件可能误报为病毒。

解决方案:

  1. 将JiYuTrainer.exe添加到杀毒软件白名单
  2. 使用Windows Defender排除项功能
  3. 临时关闭实时防护功能

问题二:驱动加载失败

在部分系统上可能遇到驱动签名问题导致加载失败。

解决方案:

  1. 开启测试模式:bcdedit /set testsigning on
  2. 重启系统进入测试模式
  3. 使用签名工具对驱动进行签名

问题三:注入失败

StudentMain.exe可能具备反注入保护机制。

解决方案:

  1. 确保以管理员权限运行
  2. 尝试先终止StudentMain.exe再重新启动
  3. 使用Process Explorer检查进程保护状态

问题四:窗口控制失效

某些极域版本可能使用不同的窗口类名。

解决方案:

  1. 更新JiYuTrainerHooks.cpp中的窗口检测逻辑
  2. 使用Spy++工具分析极域窗口属性
  3. 调整窗口钩子过滤条件

扩展开发与定制化指南

添加新的API钩子

在JiYuTrainerHooks.cpp中添加新的钩子函数:

// 1. 声明原始函数指针
typedef BOOL (WINAPI *Original_FunctionType)(/*参数*/);
Original_FunctionType Original_Function = NULL;

// 2. 实现钩子函数
BOOL WINAPI Hooked_Function(/*参数*/)
{
    // 自定义处理逻辑
    if (/*条件判断*/)
    {
        // 修改行为
    }
    
    // 调用原始函数
    return Original_Function(/*参数*/);
}

// 3. 安装钩子
void InstallHook()
{
    Original_Function = (Original_FunctionType)
        GetProcAddress(GetModuleHandle(L"user32.dll"), "FunctionName");
    
    Mhook_SetHook((PVOID*)&Original_Function, Hooked_Function);
}

自定义UI界面

修改JiYuTrainerUI目录中的HTML/CSS文件:

<!-- MainWindow.html示例 -->
<div class="status-panel">
    <div class="status-icon" data-bind="css: statusClass"></div>
    <div class="status-text" data-bind="text: statusMessage"></div>
</div>

<div class="control-buttons">
    <button class="btn-protect" onclick="toggleProtection()">
        <img src="res/ico-shield.png"> 开启保护
    </button>
</div>

添加新的驱动功能

在JiYuTrainerDriver/Driver.c中扩展IO控制码:

case CTL_NEW_FUNCTION: {
    // 解析输入参数
    NEW_FUNCTION_PARAM* param = (NEW_FUNCTION_PARAM*)InputData;
    
    // 实现新功能逻辑
    Status = ImplementNewFunction(param);
    
    // 返回结果
    _memcpy(OutputData, &result, sizeof(result));
    Informaiton = OutputDataLength;
    break;
}

技术伦理与合规使用建议

作为技术研究工具,JiYuTrainer的使用应遵循以下原则:

  1. 教育目的:仅限于教学环境中的技术学习和研究
  2. 合法授权:在获得授权的测试环境中使用
  3. 尊重版权:遵守软件许可协议和相关法律法规
  4. 技术交流:用于Windows系统编程技术交流和学习

总结与展望

JiYuTrainer项目展示了Windows系统编程的多个关键技术领域:

技术价值总结

  1. 内核驱动开发:通过WDK实现系统级控制功能
  2. 用户态钩子技术:基于mhook的API拦截与修改
  3. 进程间通信:用户态与内核态的高效数据交换
  4. 远程线程注入:安全稳定的DLL注入技术
  5. 混合界面开发:Sciter引擎的现代化UI实现

学习意义

对于Windows系统开发者,JiYuTrainer提供了以下学习价值:

  • 深入理解Windows内核机制
  • 掌握驱动开发与通信技术
  • 学习进程注入与保护策略
  • 实践API钩子与拦截技术
  • 了解反监控与反控制原理

未来发展方向

项目可在以下方向继续完善:

  1. 支持更多版本:扩展对极域新版本的支持
  2. 增强兼容性:优化对不同Windows版本的兼容
  3. 改进UI体验:提供更丰富的配置选项
  4. 开源社区:建立更完善的开发文档和社区支持

通过研究JiYuTrainer的源代码,开发者可以深入掌握Windows系统底层编程技术,为开发类似系统工具提供宝贵的技术参考和实践经验。项目采用MIT开源协议,鼓励技术学习和二次开发,为Windows系统安全领域贡献了重要的技术案例。

【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 【免费下载链接】JiYuTrainer 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐