首页
社区
课程
招聘
[讨论]禁止Windows Preinstallation Environment(WinPE)(再次更新思路具体到编程方法)
发表于: 2009-8-11 17:40 6418

[讨论]禁止Windows Preinstallation Environment(WinPE)(再次更新思路具体到编程方法)

2009-8-11 17:40
6418
最近也在学习汇编之余也学下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期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
关注。。。。
2009-8-11 19:49
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢关注,怎么不发表下你对这个问题的意见呢? 是可行还是行不通
2009-8-11 21:42
0
雪    币: 8201
活跃值: (2706)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
装vista体验一下pe1的效果,pe2我没有不知道
2009-8-11 22:02
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
自己设计一个BIOS或者对应的主板兴许可以。
2009-8-12 03:25
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
6
支持,修改BIOS代码。或许可以做到。
2009-8-12 08:12
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
那个工程量太大了,利用硬盘逻辑锁不知可否?
2009-8-12 12:57
0
雪    币: 44
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
硬盘逻辑锁的代码在硬盘引导区上,开机自举加锁就要改BIOS了,就是要写micro code了。有个工具Phoenix BIOS Editor可以改改模块选项,还有一个俄罗斯的工具BIOS Patcher可以改改AWORD BIOS。总之BIOS这东东是分厂商,不开放的,所以没参考文档自己搞是很难弄的。有的还需要硬件工具平台。看到一个网站有些相关内容http://www.rebios.net 。
2009-8-12 23:47
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢这位兄弟
2009-8-13 00:27
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢大家的帮忙 虽然程序还没写出来  问题也没有解决 但是还是要感谢大家 先结贴再说吧
2009-8-13 17:34
0
游客
登录 | 注册 方可回帖
返回
//