最近也在学习汇编之余也学下PE,刚好看到有一帖子:http://bbs.pediy.com/showthread.php?t=93854 ,确实这个PE对网吧系统的危害不是一般的大,至今还没找到有效的办法,我就套用上面那位兄弟的帖子内容来分析下PE的禁止。
PE是安装在U盘、光盘、移动硬盘里的,基于在保护模式下运行的WindowsXP个人版内核,是一个只拥有较少(但是非常核心)服务的Win32子系统。这些服务为Windows安装、实现网络共享、自动底层处理进程和实现硬件验证。
他自己已经是一个简小的系统了,所以从其他地方禁止其启动,貌似实现不了,象其他兄弟说的那样,设BIOS密码、把USB禁掉,都是一些治标不治本的方法,而且有很大的场合限制,比如网吧,没几个网吧开机还设密码的吧 ?
小弟结合了开机启动的过程来谈下怎么来禁止PE系统的启动,启动的过程大家都很清楚吧 ,具体看下面吧
1. 开机
2. BIOS 加电自检 ( Power On Self Test -- POST ) 内存地址为 0FFFF : 0000
3. 将硬盘第一个扇区 (0头0道[柱面]1扇区,也就是Boot Sector) 读入内存地址0000 : 7C00 处.
4. 检查(WORD) 0000 : 7DFE 是否等于0xAA55,若不等于则转去尝试其它启动介质,如果没有其它启动介质则显示"No ROM BASIC" 然后死机.
5. 跳转到0000 : 7C00 处执行MBR 中的程序.
6. MBR 首先将自己复制到 0000 : 0600 处, 然后继续执行.
7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区, 则转停止.
8. 将活动分区的第一个扇区读入内存地址 0000 : 7C00 处.
9. 检查(WORD) 0000 : 7DFE是否等于0xAA55,若不等于则显示"Missing Operating System"然后停止,或尝试软盘启动
10. 跳转到0000 : 7C00处继续执行特定系统的启动程序.
11. 启动系统 ...
启动的过程大致就是这样了,PE本身就是个系统,所以在启动介质上把他禁止掉,也就能实现对PE系统的禁止,让0000:7DFE永远都或只能等于0XAA55
思路就是这样不知道能不能行的通,如果行的话,请大牛能给个提示该怎么实现,能写出程序当然是对菜鸟最好的帮助,这个PE系统危害很大,能解决这个办法也是一件公德啊。
如果哪位兄弟有什么好的办法可以跟贴,也可以和我一起探讨下:staryme@qq.com
我功力不够,够的话就自己写了,在这也惭愧一下
查了很多资料,获得了一个很大的收获就是用硬盘逻辑锁的形式来解决这个问题。
我们先来看下硬盘逻辑锁的原理。
从上面的开机启动11步骤可以知道,前5步是BIOS引导程序完成的,后面是由MBR中的引导程序完成的,所以利用BIOS读硬盘主引导扇区内容引导操作系统的机制,我们可将原先的主引导扇区的内容保存到硬盘的一个隐蔽扇区内,再将自己的硬盘锁程序写进硬盘的主引导扇区,当被替换之后的内容被读入内存后,运行硬盘锁程序。(所谓“硬盘逻辑锁”是使用了某些DOS的一个错误制成的。它采用了“循环分区表”的技术,使某些有这个错误的DOS无法用任何设备启动,包括软盘等移动设 备。当DOS启动时,系统会自动搜索硬盘中的各个分区的信息,如类型、大小等,以使系统能够识别硬盘,分别分配为C、D、E、F等驱动器,并使用户能对其 进行各种操作。而“逻辑锁”正是利用了这一点,通过修改硬盘的分区表使分区表发生循环,即把扩展分区的第一个逻辑盘指向自身,使某些DOS系统启动时查找 分区时发生死循环而无法启动。)我们要改的是只认识AA55不认其他的。
具体编程实现思路:
程序代码说明:
硬盘锁源程序分为两个部分
第一部分 DISKLOCK. asm 用汇编语言编写,该程序用来替代硬盘主引导扇区的内容,这部分程序的功能就是解决只可以从硬盘启动,其他介质一略免掉
第二部分 setup. c 是硬盘锁安装程序,用C语言编写该程序可以用来安装硬盘锁,把DISKLOCK.com 的内容安放在硬盘主引导扇区之中,并把原来的引导程序保存在硬盘第二个扇区中。
具体已经分析到这里了,苦于我编程技术还在学习中,无法实际应用,真倒霉,早知道早两 年学编程现在就直接做了,还在这求人 ,哎 ,希望有能人能写出代码,解决这一烦恼!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)