目录

  • 逆向分析7.8算法
  • 解极域U盘限制
    • 硬解禁
    • 软解禁
  • 网络、键盘限制

逆向分析7.8算法

先给个开幕雷击吧:

这真不知道怎么评价好呢,学生机房管理助手上一个版本还是7.5,在11月23号这天直接跳到了7.8,咱也不知道它是有中间昙花一现的两个版本呢,还是避讳什么,必须跳版本。

说实话,在我满怀期待反编译它之后,一股酸劲涌满我全身:作者开摆了。为什么呢?

上一个版本分析(逆向分析学生机房管理助手7.5随机进程名算法)中,我最终是在main.exe的“退出程序”这个窗体中找到退出算法的,于是这个版本下载好,当然是首先用.NETReactorSlayer脱壳。

脱完之后,打开dnSpy,按照从前的套路,直接进入main.exe的Form3,根据“退出”这个按钮的点击事件,定位到了method_3()方法。找到熟悉的退出逻辑:

核心逻辑和7.5版本相比,只更改了一处:此前筛选的程序名称长度必须是10,而在这个版本中只要长度大于等于4都符合条件。此外对字符范围的限制仍是100~109,实际测试也确实如此。

于是代码就出来了,只需要更改一处,我就不花费时间贴出来了,大伙自己到上一个版本的博客里找代码吧,改动两处即可。

如果就为了一个已经摆烂的作者写一篇博客也太闲了,我的作风也不是这样的,于是就有了接下来对极域的分析。

解极域U盘限制

极域有几个功能,这些功能真的很ex,这回我们挑他三太子出来吧。首先是U盘限制,有些时候你想要用U盘里一些资料,却很不幸地 get a pretty access denied 拒绝访问……是不是想揍人的心都有了?

解除这个限制有两种方法,但实际上都是对极域的文件驱动作操作。它的驱动叫TDFileFilter.sys,经过IDA Pro分析,它调用FltRegisterFilter()FltCreateCommunicationPort()等函数创建微型筛选器,对文件访问请求进行筛选,如果访问了U盘、CD光盘等,就会返回0xC0000022,转换成Win32错误值(RtlNtStatusToDosErrorNoTeb())就是0x5拒绝访问。

硬解禁

于是暴力的方法有了,就是直接停止并删掉这个驱动,使用cmd命令(这也是最简单的方法):

sc stop TDFileFilter
sc delete TDFileFilter

如果cmd被禁用了,还有powershell:

cd C:\Windows\System32\
.\sc stop TDFileFilter
.\sc delete TDFileFilter

用API就是这样的:

SC_HANDLE sc = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
SC_HANDLE hFilt = OpenService(sc, "TDFileFilter", SERVICE_STOP | DELETE);
SERVICE_STATUS ss = {};
ControlService(hFilt, SERVICE_CONTROL_STOP, &ss);
DeleteService(hFilt);
CloseServiceHandle(sc);
CloseServiceHandle(hFilt);

软解禁

极域的安装目录下有很多dll,其中大部分是依赖库,而以“LibTD”开头的那些dll则是极域的一些模块,它们有分工明确,后面的分析中我们都要用到它们。

而在它们之中有一个模块叫“LibTDUsbHook10.dll”,用IDA Pro看导出函数:

里面的这些函数顾名思义都能知道它们的意思。其中TDUsbFilterInit()TDUsbFiltFree()TDUsbFilterDone()这三个函数就是我们需要的。依次查看它们实际执行了什么,再为我们所用,就是优雅地玩极域的最高境界。

反编译它们形成的伪代码如下:

HANDLE g_hPort;
HANDLE hObject;//这个有点迷惑,这俩玩意有啥关系?BOOL TDUsbFilterInit()
{return hObject != (HANDLE)-1 || sub_10001410() == 0;
}HRESULT sub_10001410()
{HRESULT result; // eaxHRESULT v1; // esichar Buffer[260]; // [esp+0h] [ebp-108h] BYREFresult = 0;if ( g_hPort == (HANDLE)-1 ){result = FilterConnectCommunicationPort(L"\\TDFileFilterPort", 0, 0, 0, 0, &g_hPort);v1 = result;if ( result ){memset(Buffer, 0, sizeof(Buffer));sprintf(Buffer, "FilterConnectCommunicationPort Fail: errCode is %d", result);OutputDebugStringA(Buffer);return v1;}}return result;
}int TDUsbFiltFree()
{int InBuffer[4]; // [esp+0h] [ebp-10h] BYREFmemset(&InBuffer[1], 0, 12);InBuffer[0] = 8;sub_100014A0(InBuffer);return 1;
}HRESULT __stdcall sub_100014A0(LPVOID lpInBuffer)
{HRESULT v2; // esiDWORD BytesReturned; // [esp+0h] [ebp-10Ch] BYREFchar Buffer[260]; // [esp+4h] [ebp-108h] BYREFif ( g_hPort == (HANDLE)-1 ){OutputDebugStringA("TDFileFilter.sys Connect Fail,g_hPort is INVALID_HANDLE_VALUE.");return -1;}else{BytesReturned = 0;v2 = FilterSendMessage(g_hPort, lpInBuffer, 0x10u, 0, 0, &BytesReturned);if ( v2 ){memset(Buffer, 0, sizeof(Buffer));sprintf(Buffer, "FilterSendMessage Fail: errCode is %d", v2);OutputDebugStringA(Buffer);}return v2;}
}HANDLE TDUsbFilterDone()
{HANDLE result; // eaxresult = hObject;if ( hObject != (HANDLE)-1 ){result = (HANDLE)CloseHandle(hObject);hObject = (HANDLE)-1;}return result;
}

向极域过滤端口发送消息,驱动程序收到消息后以为是极域在操控它,就会放开限制。

从中(输出内容)还可以看出,极域程序员变量名起得还挺规范
里面有很多判断句柄是否有效的多余代码,其实实际上发挥作用的代码就这些:

#include <fltuser.h>
//LibTDUsbHook10.dll
//连接过滤端口(TDUsbFilterInit)
HANDLE hPort;
HRESULT hResult = FilterConnectCommunicationPort(L"\\TDFileFilterPort", 0, NULL, 0, NULL, &hPort);
if(hResult){//出错!一定要停止执行,不然会导致我们程序崩溃!//下面错误代码有助于判断错误原因//DWORD dwErrorCode = hResult & 0x0000FFFF;return;
}
//发送消息(TDUsbFiltFree)
int lpInBuffer[4] = {8, 0, 0, 0};
hResult = FilterSendMessage(hPort, lpInBuffer, 16/*0x10u*/, NULL, 0, NULL);
//关闭句柄(TDUsbFilterDone)
CloseHandle(hPort);

现在流传着所谓“极域解禁USB代码”,被偷到B站等地方为大众所知,事实上就是先LoadLibrary()加载LibTDUsbHook10.dll,然后调用这3个导出函数。现在,大伙知道原理如何了吧。

网络、键盘限制

待写,过几天再来看看吧~

【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制相关推荐

  1. 全网首发!逆向分析学生机房管理助手7.4随机进程名算法

    一到九月份,学生机房管理助手就直接开始窜稀式更新,连更两个版本,这使我弄不到7.3的样本,只能分析7.4了.大伙有7.3样本欢迎联系我. 7.2版本分析见最新支持7.2!用C++干掉讨厌的学生机房管理 ...

  2. 【去除控制】对 学生机房管理助手6.1密码破解的分析1st

    本文仅以学习交流为目的,请勿用于非法用途,一切因引起的后果与作者无关. [去除控制]对学生机房管理助手密码破解的实践方法 2st https://blog.csdn.net/qq_37485351/a ...

  3. 最新支持7.2!用C++干掉讨厌的学生机房管理助手

    本文中算法只适用于学生机房管理助手7.2版本. 上信息课时,教师会用极域等电子教室控制学生,这就相当于个木马.要结束掉它进程并不难,taskkill.ntsd都能结束掉,但是痛苦地发现,某些机房装了一 ...

  4. 【去除控制】 对学生机房管理助手密码破解实践方法 2st

    本文仅以学习交流为目的请勿用于非法用途 [去除控制]对学生机房管理助手密码破解的分析 1st https://blog.csdn.net/qq_37485351/article/details/932 ...

  5. 极域电子教室学生机房管理助手(好好上课)教程

    自从出了学生机房管理助手这个玩意后,想必大家上课认真了许多? 是的,这篇博客,让你好好上课(滑稽)! 顺便说一下,底下的,鬼抄你代码了?别瞎*.乱说,放~*的狗-呢? 全自制的,你孤独别来这里找存在感 ...

  6. 极域工具包 1.1正式发布!窗口化极域,解键盘锁,适配学生机房管理助手7.4-7.5!

    原理:https://blog.csdn.net/weixin_42112038/article/details/125346545 截图: 新增 支持杀掉学生机房管理助手7.4/7.5 窗口化/全屏 ...

  7. 去除控制6.0 首创完美破解学生机房管理助手密码及限制 通杀机房控制软件

    百度搜索 去除控制 前往官网下载 去除控制已问世3周年了 此次版本更新是历史上最丰富最有用的,欢迎体验. 更新内容: 1.使用全新自研超级杀进程skpx,以解决部分教室封杀ntsd.exe及命令行调用 ...

  8. 如何摆脱学生机房管理助手的魔掌

    当你好不容易,找到如何脱离电子教室的控制时(心里美滋滋呢) 当你开防火墙时 当你拔网线时 当你开任务管理器时 Surprise Mother F**k 蓝上加蓝,blue上加蓝,蓝上加blue,blu ...

  9. 极域工具包 1.0正式发布!一键杀极域!完美破解学生机房管理助手

    原理都在这https://blog.csdn.net/weixin_42112038/article/details/125346545 话不多说,上截图! 这个电脑没有装极域,所以没有把密码破解出来 ...

最新文章

  1. SQL 解决in的参数烦恼(经典,简洁,高效)
  2. listFiles()
  3. HDU 3788 ZOJ问题
  4. Hadoop中Namenode单点故障的解决方案及详细介绍
  5. c语言值传递 地址传递 引用传递参数,C++参数传递(值传递,引用传递)
  6. Processing编译android的apk应用
  7. SpringBoot开发Restful接口
  8. 使用Dapper处理多个结果集和多重映射的教程
  9. 【渝粤教育】国家开放大学2018年秋季 1070t组织行为学 参考试题
  10. 智能合约语言 传统编程语言 异同
  11. 大唐移动骨干集体出走
  12. vue 高德地图搜索功能_vue高德地图搜索功能
  13. 怡红快绿 [转自TK's Blog]
  14. 机器学习实战-54: 集成学习分类算法(ada-boost)
  15. 电脑监控是真的吗?4个实验一探究竟
  16. LattePanda 外壳 HOTe-LPA 铝合金外壳
  17. 强化学习、GAN与多巴胺对撞:阿里AI 智能体认知研讨会干货
  18. 多目标量子粒子群优化的经济排放调度问题(Matlab代码实现)
  19. mysql数据库数据的删除与恢复
  20. 网站集健康检查(health Check)

热门文章

  1. 数据存储单位及转换关系
  2. uniapp获取微信运动步数
  3. 一个小时,这只机械狗“自学”会了走路!
  4. 把自己电脑上的文件传给linux虚拟机中
  5. Laya Scene
  6. 设置树莓派屏幕一直亮屏,禁止休眠的解决方案。
  7. 【FFmpeg】AVFrame及相关函数详解
  8. 史上最全的微信开放平台对接教程(附完整源代码,Github开源)
  9. 云鼠实现扫地机器人三大技术突破,成最受青睐的扫地机器人方案
  10. Oracle 常规ArcSDE操作