本文中算法只适用于学生机房管理助手7.2版本。
上信息课时,教师会用极域等电子教室控制学生,这就相当于个木马。要结束掉它进程并不难,taskkill、ntsd都能结束掉,但是痛苦地发现,某些机房装了一款学生机房管理助手!
就是它!暴力结束电子教室,它会蓝你一脸!亲身经历过的都想暴揍这个软件作者。
经研究,是如上两个进程在作怪。jfglzs.exe这个程序位于助手的安装目录下,好理解,但是下面那个进程,通常是3个字母加1个数字,每天名字都不一样。查看文件属性
原来是助手安装目录下prozs.exe的自我复制。 我调整系统时间来实验,可以得知其使用特定算法来生成名字而不是随机。
DIE扫描结果
原来是.NET写的,直接拖进.NET逆向软件dnSpy,发现其有壳保护!用de4dot(这里我用GUI版)脱壳
脱壳后就可以直接用dnSpy打开。
打开Form1的加载函数,发现可疑函数LD1NpDR6K,打开函数内容,果然找到目标代码
num3的值其实就是当前的月+日的和,后面就是经过一系列求余操作,拼出这4个字符。改写成C++(需要引用ctime头文件来计算num3,也可以用其他api来计算):
time_t curtime;
time(&curtime);
tm *nowtime = localtime(&curtime);
int n3=1 + nowtime->tm_mon + nowtime->tm_mday;
int n4=n3%7,n5=n3%9,n6=n3%5;
char c1,c2,c3,c4;
if(n3%2!=0){
c1=103+n5;c2=111+n4;c3=107+n6;c4=48+n4;
}
else{
c1=97+n4;c2=109+n5;c3=101+n6;c4=48+n5;
}
char c[5]={c1,c2,c3,c4,'\0'};
最后得出的字符串c即为结果,加上“.exe”就是prozs.exe自我复制的文件名了。知道了文件名,再将jfglzs.exe和算出了文件名一起结束进程,助手就GG了!
注:prozs.exe自我复制的目录在C:\Program Files\temp***\下,temp后面的字符也是经过算法计算的,算法也在上面那个函数中。不过对我们来说帮助不大,如需删除,直接在explorer中把temp开头的文件夹全删掉即可。