极域电子教室完全分析(附绕过方法和软件)
本帖所包含的内容仅限技术交流和学习研究使用,禁止用于其他用途!因使用不当造成的一切后果与本人无关!
毕业了,曾经我花了4节课的时间分析计算机课的控制软件(自己懒得搭环境),干脆写篇文章分享给各位,追求自由的小伙伴们可以看看,不过被BAN了不要找我(本人曾被物理封杀……)
限制功能分析
首先这玩意儿在屏幕广播的时候是屏蔽键盘按键的(home等功能键还有用),我用MyMonitor分析后(日志找不到了。。)发现它是挂了一个WH_KEYBOARD_LL钩子,然后屏蔽了系统热键(关于ctrl+alt+del之前找到过一个详细分析文档,也找不到了……抱歉,各位度娘吧),不过输入法还是可以用的,大家可以用微软的标准输入法打开帮助试试看,是不是过了差不多一秒就消失了?没错,这货还每隔1S左右置顶广播窗口,非常难搞。
然后是登入密码,旧版的在注册表HKEY_LOCAL_MACHINE\SOFTWARE\TopDomain\e-learning Class Standard\1.00中可以找到明文密码(程序员SX了),不过新版的改成了密文(具体什么版本记不得了,大家试试就行)。
破解思路
- 爆掉程序,用ntsd可以秒破,不过老师会发现= =
- 针对WH_KEYBOARD_LL钩子,由于windows是最后挂的钩子才生效,所以可以通过循环挂钩的方式抢占掉钩子。
- 针对置顶窗口,有两种方法:第一种是和干掉钩子一样,你每隔1S置顶,我不SLEEP无限循环置顶就OK了…… 第二种是利用任务管理器右击最小化就可以了。
破解方法
- 徒手版
- 被控制后切到标准输入法,点击软键盘,然后按键盘上的ctrl+alt,再用鼠标点击软键盘的del键,看看!!任务管理器出来了…不过有1S的置顶,会一闪而过,这时右击“屏幕广播窗口”,点击最小化,手速快一点多试几次就可以了。(有时候计时器卡一下会延长一会儿)
- 优点:不要工具、老师来了可以瞬间点任务栏打开窗口、被控制了也能用
- 缺点:需要一点手速(熟能生巧)
- win7可以用资源监视器,控制之前把studentmain.exe挂起(是的,没错,没有结束权限,但可以挂起…),经试验教师端监控会停留在挂起时的界面!,紧急情况及时恢复就可以了。
- 优点:可以无视监控(做个样子挂起就行了)、简单易用
- 缺点:需要资源监视器(xp好像没有)、不及时恢复后果…
- XP可以用ntsd -c q -pn studentmain.exe干掉程序
- 优点:简单粗暴
- 缺点:需要ntsd、老师也会简单粗暴地发现你掉线了
- 工具版
用我的FuckTeacher小工具!(我没装极域,会显示软件未安装,有的话会自动检测)
一些技术说明: - 干掉置顶用的就是无限循环置顶。
- 干掉客户端是调用ntsd,win7可以用压缩包中附带的。
- 干掉键盘锁定用的就是开新线程循环挂钩,核心代码(无视随便起的变量吧):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23UINT Update(LPVOID lpParameter)
{
HHOOK m_hHOOK1 = NULL, m_hHOOK2 = NULL,m_hHOOK3 = NULL,m_hHOOK4 = NULL;
m_hHOOK1 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
m_hHOOK2 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
m_hHOOK3 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
m_hHOOK4 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
while(true)
{
if(flg1)
{
UnhookWindowsHookEx(m_hHOOK1);
UnhookWindowsHookEx(m_hHOOK3);
m_hHOOK1 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
m_hHOOK3 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
UnhookWindowsHookEx(m_hHOOK2);
UnhookWindowsHookEx(m_hHOOK4);
m_hHOOK2 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
m_hHOOK4 = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, GetModuleHandle(NULL), 0);
}
}
return 0;
} - 置顶任务管理器是方便右击最小化的,原理和窗口置顶一样,也在一个线程里
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15UINT Updatewindow(LPVOID lpParameter)
{
CFuckTeacherDlg* dlg = (CFuckTeacherDlg *)lpParameter;
while(true)
{
dlg->SetWindowPos(&CWnd::wndTopMost,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); //本程序置顶
CWnd *pwnd = dlg->FindWindow( (LPCTSTR)32770, "Windows 任务管理器");
hwnd = pwnd->GetSafeHwnd();
if(hwnd != NULL)
{
SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); //任务管理器置顶
}
}
return 0;
} - 优点:近乎全能(挂起线程好像比较麻烦就没加= =)
- 缺点:需要带U盘或联网
下载地址
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Matrix!
评论