看到之前的一个帖子(http://www.52pojie.cn/thread-542855-1-1.html),想到我曾经花了4节课的时间进行分析(自己懒得搭环境),也兴起写了一篇文章,各位看官先看看。
首先这玩意儿在屏幕广播的时候是屏蔽键盘按键的(home等功能键还有用),我用MyMonitor分析后(日志找不到了。。)发现它是挂了一个WH_KEYBOARD_LL钩子,然后屏蔽了系统热键(关于ctrl+alt+del之前找到过一个详细分析文档,也找不到了……抱歉,各位度娘吧),不过输入法还是可以用的,大家可以用微软的标准输入法打开帮助试试看,是不是过了差不多一秒就消失了?没错,这货还每隔1S左右置顶广播窗口,非常难搞(徒手PJ见后)
然后是登入密码,旧版的在HKEY_LOCAL_MACHINE\SOFTWARE\TopDomain\e-learning Class Standard\1.00中可以找到明文密码(程序员SX了),不过新版的改成了密文(PJ见后)。
下面是破解思路:
1、爆掉程序,用ntsd可以秒破,不过老师会发现= =
2、针对WH_KEYBOARD_LL钩子,由于windows是最后挂的钩子才生效,所以可以通过循环挂钩的方式抢占掉钩子。
3、针对置顶窗口,有两种方法:第一种是和干掉钩子一样,你每隔1S置顶,我不SLEEP无限循环置顶就OK了…… 第二种是利用任务管理器右击最小化就可以了。
最后是破解方法!!!(纯原创)
徒手版:
1、被控制后切到标准输入法,点击软键盘,然后按键盘上的ctrl+alt,再用鼠标点击软键盘的del键,看看!!任务管理器出来了...不过有1S的置顶,会一闪而过,这时右击“屏幕广播窗口”,点击最小化,手速快一点多试几次就可以了。(有时候计时器卡一下会延长一会儿)
优点:不要工具、老师来了可以瞬间点任务栏打开窗口、被控制了也能用 缺点:需要一点手速(熟能生巧)
2、win7可以用资源监视器,控制之前把studentmain.exe挂起(是的,没错,没有结束权限,但可以挂起...),经试验教师端监控会停留在挂起时的界面!,及时恢复就可以了。
优点:可以无视监控(做个样子挂起就行了)、简单易用 缺点:需要资源监视器(xp好像没有)、不及时恢复后果...
3、XP可以用ntsd -c q -pn studentmain.exe干掉程序
优点:简单粗暴 缺点:需要ntsd、老师也会简单粗暴地发现
工具版:
用我的F**KTeacher(和谐)小工具!
一些技术说明:
0、干掉置顶用的就是无限循环置顶。
1、干掉客户端是调用ntsd,win7可以用压缩包中附带的。
2、干掉键盘锁定用的就是开新线程循环挂钩,核心代码(无视随便起的变量吧):
[C++] 纯文本查看 复制代码 UINT 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;
}
3、置顶任务管理器是方便右击最小化的,原理和窗口置顶一样,也在一个线程里
[C++] 纯文本查看 复制代码 [mw_shl_code=cpp,true]UINT 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;
} [/mw_shl_code]
优点:近乎全能(挂起线程好像比较麻烦就没加= =) 缺点:需要带U盘或联网
HEHEHEHEHE-----
附:下载地址:
http://pan.baidu.com/s/1slmxXLj PASS:sfq3 |