【干货最多】逆向分析学生机房管理助手7.8随机进程名算法、极域U盘、网络、键盘限制
目录
- 逆向分析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盘、网络、键盘限制相关推荐
- 全网首发!逆向分析学生机房管理助手7.4随机进程名算法
一到九月份,学生机房管理助手就直接开始窜稀式更新,连更两个版本,这使我弄不到7.3的样本,只能分析7.4了.大伙有7.3样本欢迎联系我. 7.2版本分析见最新支持7.2!用C++干掉讨厌的学生机房管理 ...
- 【去除控制】对 学生机房管理助手6.1密码破解的分析1st
本文仅以学习交流为目的,请勿用于非法用途,一切因引起的后果与作者无关. [去除控制]对学生机房管理助手密码破解的实践方法 2st https://blog.csdn.net/qq_37485351/a ...
- 最新支持7.2!用C++干掉讨厌的学生机房管理助手
本文中算法只适用于学生机房管理助手7.2版本. 上信息课时,教师会用极域等电子教室控制学生,这就相当于个木马.要结束掉它进程并不难,taskkill.ntsd都能结束掉,但是痛苦地发现,某些机房装了一 ...
- 【去除控制】 对学生机房管理助手密码破解实践方法 2st
本文仅以学习交流为目的请勿用于非法用途 [去除控制]对学生机房管理助手密码破解的分析 1st https://blog.csdn.net/qq_37485351/article/details/932 ...
- 极域电子教室学生机房管理助手(好好上课)教程
自从出了学生机房管理助手这个玩意后,想必大家上课认真了许多? 是的,这篇博客,让你好好上课(滑稽)! 顺便说一下,底下的,鬼抄你代码了?别瞎*.乱说,放~*的狗-呢? 全自制的,你孤独别来这里找存在感 ...
- 极域工具包 1.1正式发布!窗口化极域,解键盘锁,适配学生机房管理助手7.4-7.5!
原理:https://blog.csdn.net/weixin_42112038/article/details/125346545 截图: 新增 支持杀掉学生机房管理助手7.4/7.5 窗口化/全屏 ...
- 去除控制6.0 首创完美破解学生机房管理助手密码及限制 通杀机房控制软件
百度搜索 去除控制 前往官网下载 去除控制已问世3周年了 此次版本更新是历史上最丰富最有用的,欢迎体验. 更新内容: 1.使用全新自研超级杀进程skpx,以解决部分教室封杀ntsd.exe及命令行调用 ...
- 如何摆脱学生机房管理助手的魔掌
当你好不容易,找到如何脱离电子教室的控制时(心里美滋滋呢) 当你开防火墙时 当你拔网线时 当你开任务管理器时 Surprise Mother F**k 蓝上加蓝,blue上加蓝,蓝上加blue,blu ...
- 极域工具包 1.0正式发布!一键杀极域!完美破解学生机房管理助手
原理都在这https://blog.csdn.net/weixin_42112038/article/details/125346545 话不多说,上截图! 这个电脑没有装极域,所以没有把密码破解出来 ...
最新文章
- SQL 解决in的参数烦恼(经典,简洁,高效)
- listFiles()
- HDU 3788 ZOJ问题
- Hadoop中Namenode单点故障的解决方案及详细介绍
- c语言值传递 地址传递 引用传递参数,C++参数传递(值传递,引用传递)
- Processing编译android的apk应用
- SpringBoot开发Restful接口
- 使用Dapper处理多个结果集和多重映射的教程
- 【渝粤教育】国家开放大学2018年秋季 1070t组织行为学 参考试题
- 智能合约语言 传统编程语言 异同
- 大唐移动骨干集体出走
- vue 高德地图搜索功能_vue高德地图搜索功能
- 怡红快绿 [转自TK's Blog]
- 机器学习实战-54: 集成学习分类算法(ada-boost)
- 电脑监控是真的吗?4个实验一探究竟
- LattePanda 外壳 HOTe-LPA 铝合金外壳
- 强化学习、GAN与多巴胺对撞:阿里AI 智能体认知研讨会干货
- 多目标量子粒子群优化的经济排放调度问题(Matlab代码实现)
- mysql数据库数据的删除与恢复
- 网站集健康检查(health Check)