Board logo

标题: 如何防止doskey.com在内存中被卸载 [打印本页]

作者: martin325     时间: 2006-2-20 21:06    标题: 如何防止doskey.com在内存中被卸载

如何防止doskey.com在内存中被卸载?请各位大虾赐教了,谢谢!
作者: DOSforever     时间: 2006-2-21 11:07
doskey 好象本身就没有卸载功能,就和 smartdrv 一样
作者: martin325     时间: 2006-2-21 11:15
doskey -u 可以使doskey从内存中卸载

doskey -R可以使doskey从内存中重新装载

现在的问题是:如何使“doskey -u”命令失效?
作者: DOSforever     时间: 2006-2-21 11:25
你说的是哪个 DOS 版本的 doskey ?
作者: martin325     时间: 2006-2-21 13:07
DOS版本:
Windows Millennium [Version 4.90.3000]
作者: martin325     时间: 2006-2-21 13:09
这个doskey.com是从MS-DOS 7.1的映像文件里提取的,应该是7.1版本的吧。
经过试用,也可以在Windows Millennium [Version 4.90.3000] DOS版本中应用
作者: DOSforever     时间: 2006-2-21 15:08
奇怪了,我的 doskey 怎么没有这个参数,估计你的是第三方开发的
作者: Jneny     时间: 2006-2-21 15:11
用Edit.com 以二进制打开并编辑Doskey.exe 文件更改 -u参数为基它字符,,
作者: martin325     时间: 2006-2-21 16:18
在WINXP环境下,用HexEdit如何修改Doskey,即如何直观地查找到 -u 命令
作者: willsort     时间: 2006-2-21 16:53
Re martin325:

      MS-DOS7.10 的 doskey.com 确实是第三方工具,是 Paul Houle 编写的增强版本,这个使用 doskey /? | more 即可查知。而MSDOS6.22及以下、Win9x及以上等微软自己的 doskey 版本,都是不带卸载参数的。

      至于在 DOS/Win 查找 doskey 的命令行参数的位置这必须使用调试工具进行跟踪调试后才能确定,通过普通的查找方法是无法得知的,也即单纯运用 edit / hexedit 无法实现 /u 参数的禁止,除非已经得知它的地址。

      另外,需要提醒的是,即使 doskey 始终常驻内存,也并不能禁止 doskey 宏命令的新增、修改和删除,所以用 doskey 实现的写命令的禁用,是可以轻松解除的。
作者: martin325     时间: 2006-2-22 09:51
请问哪儿提供下载不带卸载参数的DOSKEY?

并且这个DOSKEY适用于Windows Millennium [Version 4.90.3000] DOS版本中应用

请大虾帮忙了:)
作者: martin325     时间: 2006-2-22 09:59
如果doskey 始终常驻内存,如何解除被禁止 的doskey 宏命令的新增、修改和删除?
作者: martin325     时间: 2006-2-22 13:14
请问7楼的高手,你的Doskey可以上传一下吗?
作者: willsort     时间: 2006-2-22 13:41
Re martin325:

      DOSKEY 理应在所有的 Windows 版本和大多数 MS-DOS 版本中存在,只是 MS-DOS 下的 doskey.com 有版本限制,而 WinNTs 下32位的 doskey.exe 则不能在16位的MS-DOS 下运行。难道你的 WinME 没有 doskey.com 吗,那么可以试试 Win98 下的 doskey.com?

      DOSKEY 宏命令的创建、修改、删除十分简单,类似于环境变量设置语句 set 。

      创建或修改:doskey del=none
      删除:doskey del=

      至于你所说的“解除”,我理解为禁止 doskey 命令的操作,这通常是比较复杂的。不过也有一个取巧的办法:doskey doskey=cls ,将 doskey 命令也禁止掉,这样就无法在命令行使用 doskey ,自然也就无法修改和删除宏命令了。

      当然,“道高一尺,魔高一丈”,这个取巧也可以轻松破解,而且解法不只一种(已得4种),只不过知道的人比较少罢了。在这里,不妨作为一个竞猜题目,请高位达人各抒己见,看能否得出与我心中所想有所异趣的答案。

[ Last edited by willsort on 2006-2-22 at 13:47 ]
作者: DOSforever     时间: 2006-2-22 14:29
哈哈,不知笑天所说的“高位达人”是怎么个“高位”,“达人”达到一个什么样的人。

看完你的无奖竞猜。我大致点一下,看咱们是否想到一块了

space
batch
ren
alt-

本来我就觉得martin325玩这种“加密”没什么意思,不过大家在一起交流交流,切磋切磋技艺也挺有意思。哈哈
作者: DOSforever     时间: 2006-2-22 14:33


  Quote:
Originally posted by martin325 at 2006-2-22 13:14:
请问7楼的高手,你的Doskey可以上传一下吗?

我的 doskey 也不是我的,就是 MS-DOS/Windows 98 自带的
作者: martin325     时间: 2006-2-22 14:43
谢谢斑竹提供一个个取巧的办法:)
本人的启动盘是WINME下制作的,而装WINME系统的电脑也找不到了。

刚试过Win98 下的 doskey.com,版本有冲突,用不了:(

不知哪位热心朋友能否提供下载?
作者: martin325     时间: 2006-2-22 16:49
15楼的方法,我试了一下,没用啊。

是竞猜答案不对,还是本人操作有误?
作者: martin325     时间: 2006-2-23 08:12
请斑竹公布一下答案!
作者: DOSforever     时间: 2006-2-23 09:42


  Quote:
Originally posted by martin325 at 2006-2-22 16:49:
15楼的方法,我试了一下,没用啊。

是竞猜答案不对,还是本人操作有误?

我说了,我只是大致点了一下,并没有完整的说出答案,因为这样就影响别人回答了,相信知道的人一定看得懂。而且我说的方法只适用于 MS-DOS 自带的 doskey ,对第三方开发的可能只是部分适用。
作者: martin325     时间: 2006-2-23 10:32
在Autoexec批处理文件里写上:
doskey del=none
doskey doskey=cls
运行执行Autoexec后,就用不了del命令,doskey本身也卸载不了了。

请问在“不重新启动电脑”的情况下,如何使del命令恢复“可用”呢?
作者: martin325     时间: 2006-2-23 10:33
说明:本人的doskey是第三方开发的。
作者: willsort     时间: 2006-2-23 12:41
Re DOSforever:

      “高位”一说,纯属手误,不过歪打正着,能引起老兄的不平之鸣,倒是喜出望外。“无奖”一说,也属子虚,不信请看15楼的5只小手,20分可是我的评分上限了

      不过,老兄的答案倒确实让我有意外之得,1、2、3都是我之预想,但4确是没有想到,到现在也没有揭破,倒是无意又发现了5种解法,与你的4法一起,恰凑够“十大”了   

      目前看来,这场切磋确实越来越有意思了,倒是有些感谢 doskey 的这些“安全问题”了,不过它的漏洞未免也太多了些。

Re  martin325:

      实在佩服兄能对 DOS 的安全问题如此执着,早年我对此只是稍下工夫,便觉无望而放弃了。

      其实想增加 DOS 的安全性,启动时的登录问题是第一要塞,而启动后的权限分配则只是内部的一些简单防护措施了。

      至于命令限制,我认为最可取的还是直接修改 command.com 了,它并不复杂,只需要使用十六进制编辑工具进行字符串的等长替换而已。

      另外,你目前的方案中,仅仅禁止 del 是不够的,别忘了它还有个 Erase 的别名。

      最后,关于 doskey 的破解问题,可以等我揭开 Alt- 之谜后再揭晓吗?

[ Last edited by willsort on 2006-2-23 at 12:45 ]
作者: martin325     时间: 2006-2-23 13:00
谢谢提醒:)
等待答案中……
作者: willsort     时间: 2006-2-24 18:13
Re martin325:

      众里寻它千百度,蓦然回首,却在灯火阑珊处。

      DOSforever 兄的 alt- 之解,却原来就藏在 DOSKey /? 中,枉我从 Alt-Num,Alt-Enter 中苦思寻解。好了,现在可以公布目前为止,我所知道的可以解开 doskey doskey=cls 的所有方案了。      

  1. (Alt-F10)
  2. (space)doskey doskey=
  3. doskey.com doskey=
  4. call doskey doskey=
  5. for %c in (doskey) do %c doskey=
  6. if errorlevel 0 doskey doskey=
  7. doskey/reinstall
  8. command /k doskey doskey=
    exit
  9. echo doskey doskey=>dk.bat
    dk.bat
    del dk.bat
  10. ren doskey.com dk.com
    dk doskey=
    ren dk.com doskey.com


[ Last edited by willsort on 2006-2-24 at 18:14 ]
作者: martin325     时间: 2006-2-24 20:02
好的,我先试试看!
关于安全问题,我在DOS启动时,在Autoexec里设置了三个choice语句,并屏蔽了F5、F8、Ctrl+C和Ctrl+Break,这样第一道关口也做了设置!

这个方法比较简单些,安全上也不是很好,但也算得上一道防线,对像我这样的小菜鸟还是有用的吧?请斑竹指出该方法的大漏洞!

另外请问还有其他更安全的方法吗?
作者: martin325     时间: 2006-2-24 22:10
刚才测试了一下,发现只有第一项对本人使用的第三方开发的doskey程序有效!

其余9项都是无效的!
作者: willsort     时间: 2006-2-25 00:45
Re martin325:

      这有些奇怪,我在 MSDOS6.22 、MSDOS7.10 和 WinME启动盘下都做了测试,而 MSDOS7.10/WinME 下使用的正是  Paul Houle 的 Enhanced DOSKEY Ver 1.8 ,除了第7项因为参数开关不同而仅对 MS 的 DOSKEY 有效,其他方法均同样有效。不知你是如何测试的?

      至于你的安全性测试,建议你首先制作一个加护你现有的所有安全措施的最简化启动盘IMG镜像,然后上传为附件或直接发到我的邮箱,这样我也可以顺便测试一下你的DOS环境下doskey安全性表现。

[ Last edited by willsort on 2006-2-25 at 00:54 ]
作者: martin325     时间: 2006-2-25 09:36
邮件已经发给willsort斑竹了。请查收,并请提出宝贵意见。

补充说明:
当运行时看到屏显为non-system disk or disk error
                          Please reboot it by enter [Ctrl+Alt+Del]                          
                          Bad command or file name
这是为了迷惑小小菜鸟的!哈哈……
作者: willsort     时间: 2006-2-25 10:35
Re martin325:

      已做测试,应该说它在安全性方面做得还是相当不错的。如果使用此启动盘启动,且不知道密码按键的情况下,是很难登录到DOS环境的。

      当然,它仍然存在一些漏洞。其中最大的,作为一张启动盘,它仍然不能防止用户使用其它方式登录系统,并从其中查看和编辑你的启动盘中的各种文件,从而轻松了解和破除各种安全性屏障。这也是 MS-DOS 本身固有的最大的安全性漏洞,甚至也是所有微软系统的最大安全性软肋。这个问题通常来说,是很难解决的,我所能想到的方案是,制作一张经过加密压缩的DOS启动盘镜像,在BIOS引导后调用某个启动工具来读取并加载这个镜像启动系统,但是我现在还未了解到那个启动工具可以读取加密压缩镜像。

      对于目前的防护措施而言,我仅提供以下几个建议:

      1、config中break.sys和autoexec中的boff使用一个就足够了,至于如何取舍在于你自己;

      2、启动后的重启提示似乎与系统原来的并不一致,细心的人会看出问题所在的。

      另外,doskey 的安全性也已测试,1-10 除 7 外均有效。需要注意的是,1、7会直接清除所有宏命令,而2-10仅删除doskey这个宏命令,而只要删除了它,再使用 doskey -r 或 doskey del= 等清除其它宏命令就简单多了。

[ Last edited by willsort on 2006-2-25 at 13:37 ]
作者: llm     时间: 2006-2-25 11:25
加密也不难,加载ramfd.sys,再通过密钥解包并展开到内存虚拟的软驱
一定程度上可以防止在其它环境下查看启动盘内容
作者: martin325     时间: 2006-2-25 14:00
Re willsort斑竹

刚才按你的提示又测试了一边,不知第2项(space)doskey doskey=
如何输入才有效,同样还有第5、9 、10项?

我在构建安全体系的目的是为了保护个人在C分区以外的硬盘上的资料或者莫个文件夹,用FOLDER GUARD加以保护。

1、在BIOS里设置了SETUP和用户开机密码,这个用户开机密码可以让别人知道,让他自由进入XP系统。SETUP只有本人知道,系统只能从硬盘启动,由于用户也不知道DOS启动盘的进入密码,所以他只能从XP系统进入。进入后,他就无法打开我的个人文件夹。由于BOOT.INI被FOLDER GUARD设为只读属性,所以不能修改系统启动页面。也不能再用vFloppy集成另一个DOS启动盘镜像了!

2、我用vFloppy把DOS启动盘镜像集成到硬盘C分区,便于用GHOST恢复系统。

3、至于斑竹所关心的DOS启动盘镜像内容保密问题,在XP系统下也用FOLDER GUARD加以保护,无法打开DOS启动盘镜像所在的文件夹。

按照以上的方案,在不知道BIOS的SETUP密码的情形下,除非开机箱清除密码(狠一狠把机箱也锁了,哈哈),那么别人只能进入XP系统操作电脑了。对那些被FOLDER GUARD保护的文件夹是没办法打开的,除非知道打开FOLDER GUARD的密码和把其加密措施破解(这个目前可能困难的)

这样,我就达到了既让别人用我的电脑,别人又无法查看我的个人文件夹的目的了。
作者: martin325     时间: 2006-2-25 14:10
不过需要感谢以上的讨论和斑竹的回复,本来我只对DOS启动盘镜像用FOLDER GUARD作了只读属性,拜读了斑竹的帖子,觉得很有必要对其增加安全措施,设为“禁止进入”属性了。然后在把系统作个GHOST映像文件,以备日后恢复,一劳永逸。
作者: yunli     时间: 2006-6-9 16:57
卸载驻留内存是否要用到cmd之类的?
如是用到的话,可以用xp自带的cacls命令,加以限制cmd之类的运行(必须是NTFS分区)

我刚接触dos,对这还不懂,答错勿笑!