Coding 的痕迹

一位互联网奔跑者的网上日记

0%

在教师端软件右方的窗口发送消息时,程序会向 班级组播地址(225.2.x.x)发送以下结构的数据包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct MseeagePacket
{
char flag[4]; // "MESS"
BYTE unknow1; // 值: 0x01
BYTE null1[7]; // 空的
BYTE messagelen; // 从下一个字节起到消息数据最后一个字节的偏移,将它减12就是消息长度
BYTE null2[4]; // 空
BYTE unknow2; // 值: 0x08,不变,可能是从本字节起到下一个数据的偏移,在值为0x02的时候弹出exchange
//对话框,不解
BYTE null3[6]; // 空
BYTE unknow3; // 值: 0x05(默认),即消息停留时间,在“其他设置”中设置
BYTE null4[3]; // 空
char message[];// 需要发送给学生端的数据
BYTE null5[2];
};
<!--more-->

例1:

4D 45 53 53 01 00 00 00 00 00 00 00 16 00 00 00 00 08 00 00 00 00 00 00 05
M E S S  . . . . . . .  . . . .  . . . . . . 
00 00 00 68 61 68 61 00 00
. . . h a h a . .

例2:

4D 45 53 53 01 00 00 00 00 00 00 00 20 00 00 00 00 08 00 00 00 00 00 00 05
M E S S . . . . . . . . . . . . . . . . . . . . 
00 00 00 41 72 65 20 79 6F 75 20 72 65 61 64 79 3F 00 00
. . . A r e y o u r e a d y ? . .

路,很曲折啊。VC6下的Tab控件有些麻烦,不知道当初VC6的设计者们,为什么不在Tab控件的属性中添加"选项卡1"、“选项卡2"与对话框的关联?说明下,VC6中的Tab控件是要和对话框关联到一起的。下面介绍方法:
一、打开VC6,点击文件->新建->工程选项卡,选择"MFC AppWizard (EXE)”,填写好工程名和路径,点击确定。
二、选择基本对话框,然后点击完成(自定义后面的细节不影响),弹出详细配置信息,点击确定。

阅读全文 »

1
2
3
4
/*
菜鸟,若有疏漏、不足或者错误,肯定指教。直接回复或联系邮箱([sunnysab@yeah.net](mailto:sunnysab@yeah.net))。
文章供学习和交流使用,转载可不注明原地址。
*/

​ 首先,配置环境。软件 极域电子教室V6 2007 不用说的(下载地址 已失效),拦包工具我用的是 科来网络分析系统 2010 技术交流版 (可以免费申请到序列号的,序列号1年过期)。建议安装一个虚拟机,以便进行试验。个人用的是 Virtual Box 。另外,在安装时把虚拟网卡也弄上,关于这个实验都在该虚拟网卡上进行,可以排除干扰。还要注意把极域电子教室的ip都设置在虚拟网卡的ip上。并且定下哪个ip装教师端,哪个ip是学生端,不要今天在虚拟机里用教师端,明天在虚拟机内运行学生端。另外还要注意的是,有时候可以只开教师端不开学生端。

阅读全文 »

bug1:破坏文件传输

在教师端文件分发时利用各种方法退出极域电子教室,文件分发会出现错误而导致所有文件分发失败。在上课时用虚拟机打开一个学生端,分发文件时关机可以利用该漏洞。

bug2:防止关机

老师常常很不厚道的远程关机,此时,只要把学生机安装目录\shutdown.exe删除,当老师关闭你电脑时,学生端自动退出而你的电脑仍然好好的运行着。

bug3:修改密码

在我写的《[原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)》和《[原]VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(下)》中提到了查看极域电子教室密码的方法,毕竟有的同学不会弄,实际上,可以在网上下载 极域电子教室V6 2007学生端的安装包,自己再安装一次,在安装过程中极域电子教室会问你把卸载密码设置成多少。这样一来,密码就会覆盖成你的。

迁移博客时注:

回顾当年发的博客真是太有意思了!

今天是2013年3月的最后一天了,想起三月时发的日志《(原)VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)》和《(原)VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(下)》,感觉有一些不足,毕竟操作起来太过于繁琐,于是我又在CSDN论坛上进行提问:“VC如何向某个进程或窗口发送关机消息?”,9楼回答了通过线程注入实现的方法,后来我试验了一下,能使用,而且不需要对windows和极域电子教室做任何实现配置。

阅读全文 »

微软有许多头文件,这些头文件里面定义了许多函数,但是在头文件中你却找不到函数内容的身影,因为函数主体被保存在了lib库中。保存在库中有一个好处,那就是源代码不容易被发现,也就是说其中的一些技术别人不容易学到。废话少说,我们现在就开始制作lib库。
首先,第一步,打开VC6.0,按Ctrl+N,选择工程选项卡,选中“Win32 Static Library”选项,输入工程名称,我们这里用“Lib库”,大家可以自己选择,至于路径,随便选一个吧,反正这次只是lib的实验。
然后点击“确定”,我们两个都不选,如果选择“预编译的头文件”的话系统会自动帮你建好stdafx.hstdafx.cpp。但另外一个“MFC支持”我没试过。
点击完成后建立了一个空的工程,我们新建一个CPP文件(注意选上“添加到工程“Lib库”“这个选项,输入文件名main.cpp,随后,在main.cpp中间输入函数代码和头文件,注意这里不需要添加main函数也不需要类似的包括dllmain函数在内的函数。
编译,有错的改错,没错的运行。VC6会提示要求输入可执行文件名,我们点击取消,随后生成Lib库.lib完成。
现在请把Debug下的Lib库.lib复制到系统目录或D盘中(我是复制到D盘的)
不要以为现在就完成了哦!我们新建一个.h文件(实际上可以打开任意文件夹或驱动器,右键—>新建—>新建文本文档,然后重命名为.h文件即可。)这里用lib.h,用记事本或VC
6打开我们刚刚新建的.h文件,将你定义的函数中函数的原型复制进去,比如说我刚才在lib文件中定义了一下函数:

1
2
3
4
5
int abc()
{
printf("abc\n");
return 0;
}

那么我在头文件中只要这么写:int abc(); 就可以了,注意后面有一个分号。.h文件编辑完了以后你就可以引用了,将.h文件复制到D盘中,在VC6中新建一个cpp文件,输入(我这里以lib文件和.h文件都在d:\下做示范):

1
2
3
4
5
6
7
8
#include <d:\lib.h>
//不是#include来包含,我一开始写日志时写错了,感谢狂飙为我从天落指出
#pragma comment(lib, "d:\lib.lib")
int main()
{
abc();
return 0;
}

运行,没有错误,你会看到屏幕输出abc。怎么样?还有需要说明的是,虽然dll也可以实现这个一样的功能,但是lib有以下几点好处(对比dll):

  1. 没有dllmain函数,运行更简单
  2. 大小不大
  3. 运行后lib就嵌在程序里面了,dll还要在程序旁边跟一个小尾巴(dll文件)

怎么样?自己赶快试一试吧!

迁移博客时注:
这是我最喜欢的一篇博客了,因为当时有人在回复里感谢我,我印象很深。觉得自己掌握了高科技。