Board logo

标题: [原创]一个罕为人知的秘密 ( 内部命令) [打印本页]

作者: VAF     时间: 2008-2-16 21:55    标题: [原创]一个罕为人知的秘密 ( 内部命令)

原创:一个罕为人知的秘密 (Windows Command Processor 内部命令)

说来话长, 这个秘密早在纯 DOS 时代 (MS-DOS 6.22) 就被我以现了, 距今已经十多年了.
这个秘密一直被我自己使用着, 我也一直不愿公开, 我是有点担心, 怕公开了会乱了方寸.
奇怪的是, 恁多年来别人也没发现, 可能是有点冷门吧.

那么, 为什么现在我又要公开此秘密呢?
因为, 某些病毒也一直利用着此双刃剑向受害者发威.

决定公开此秘密, 就是要把这潭水搅混, 让某些病毒也无所适从.
这可能 (必然) 也会使正规合法的程序受到影响, 不过那是另一课题的事了.

接触正题吧, 这话怎么描述呢?
其实操作系统之命令解释器 CMD.EXE (之前一直叫 COMMAND.COM) 的内部命令;
也可以“作废 (效果等同于删除)”、“改名”的。

这就是我要向大家披露的秘密的核心.

那么,
怎么“作废”和“改名”命令解释器的内部命令呢?
“作废”和“改名”命令解释器的内部命令之后又有何影响呢?
感觉倒述好.

1. “作废”和“改名”命令解释器的内部命令之后有何影响?
    关于什么是内部命令和外部命令, 为了节省篇幅, 我就不多说了, 不明白者请查阅有关资料.
    不过, 不明白这事最好等明白了之后再来, 否则可能越看越不明白.
    内部命令有多少, 版本不同数量不尽相同; 通常版本高些数量多些, 功能也强些.
    这些内部命令为操作者提供了极大的方便.

    然而, 事物总是具有两面性的, 这种两面性有时表现为双刃剑性质.
    命令解释器的内部命令也不例外, 具有两面性的双刃剑性质.
    它们被操作者合法应用时, 是得力的工具, 助手.

    但这些命令解释器的内部命令, 一旦被病毒所利用时, 就是凶器, 后果不堪想象.
    举一例:
    rd /q /s C:\ 无异于 format C:

    骇人听闻吗, 绝对不是, 目前, 病毒在受害者的机器里直接
    或通过脚本执行内部命令的实例比比皆是; 在这点上我是有发言权的,
    因为, 十多年来我的命令解释器一直使用的都是被我修改过的.
    在我这里由于病毒调用不到想调用的标准内部命令而被我截获的病毒脚本一筐筐一箩箩.
    也举个例子吧, 而这个例子只有病毒作者看到后会感到惊讶,
    因为, 通常在正常的系统中你根本就看不到这些脚本的, 它们达到目的后就自毁了.

    @echo off
    if not exist %SystemRoot%\system32\机器鼠.exe (今年流行机器鼠) copy mmouse.dat %SystemRoot%\system32\机器鼠.exe >nul
    attrib +h %SystemRoot%\system32\机器鼠.exe >nul 2>nul
    regedit /s mmouse.reg
    del mouse.dat >nul
    del mouse.reg >nul
    :loop
    del 0% >nul
    if exist 0% goto loop

    大体上就是这种格式. 其中, 机器鼠.exe 是比喻的病毒程序 (它的前身是 mmouse.dat)
    在这个病毒脚本中, 病毒调用了两个内部命令: copy 和 del
    在这个病毒脚本中, 病毒最后利用 del 0% 自毁了

    首先说, 病毒脚本可以在这里调用任何标准的内部命令已是事实.
    难道不可以调用前面所说危险命令:
    rd /q /s C:\
    rd /q /s D:\
    rd /q /s E:\
    ............

    之所以, 目前这么狠毒的病毒还不多见;
    一是, 它们还未丧尽天良.
    二是......在这里我顺便阐述我的另一个观点;
    病毒, 不会, 不能太厉害了, 道理其实也很简单, 太厉害的病毒等于自杀.
    试想, 一中招机器立刻就等于高格或低格了, 那么, 这个如此厉害的病毒自己还能活吗?
    那就不能再叫病毒了, 必须新产生一个名词来称谓这种东西了.

    再回到主题上, 那么, 以上这个病毒在我这里就算基本上栽了.
    因为我这里不存在 copy del ren rd md ......
    就连别名 earse rename rmdir mkdir ...... 也不存在.
    也可以这么说吧, 除了 cd chdir path if rem 我没改, 其余几乎都改了, 哈哈.

    这病毒能不栽吗, 它要把 mmouse.dat 改名复制到目的地的目的达不到啊.
    自毁痕迹的目的也达不到了, 只好连脚本也被我捕获了.

本段小结:
    如果你不懂 CMD , 那么 CMD 基本是为病毒准备的, 现在 CMD 在大多数机器中
    不起什么好作用, 所以建议这样的用户禁用 CMD 或删除 CMD , 方法网上多的是.

    如果你懂 CMD , 并且自己还时不时的用用, 那么, 我建议你也修理修理 CMD .

    我必须告诉你, 如果你这么做了, 某些要调用 CMD 的程序就不能运行了.
    不过, 主权还是在你手上, 只要你能够灵活应对还是没问题的 (见后, 技巧) .
    我可以坦率地告诉你, 本文所介绍的内容不会对系统有不良的副作用.

2. 怎么“作废”和“改名”命令解释器的内部命令
    我曾改过 MS-DOS6.22 的 COMMAND.COM
    我曾改过 Win98, WinMe 的 COMMAND.COM
    我曾经使 Win98, WinMe 的 Wininit.ini 失效 (防毒效果很好, 想替换系统文件, 没门, 仍在使用中)
    我甚至使 AUTOEXEC.BAT 不叫此名 (防毒效果也很好啊, 现在仍在使用中)
    也可以使 Config.sys 不叫此名 (意义不大, 搞 DOS 驱动程序病毒的极少)
    我曾经使 dir /a 彻底失效

    还是长话短说, 现在是 XP 时代, 直击 CMD.EXE 吧, 9x 举一反三很容易.

    首先复制一份 CMD.EXE 到另处, 然后用 16 进制的编辑器打开 CMD.EXE
    转到相对扇区 0000406 区 (若是 2003 的 CMD.EXE 则为相对扇区 0000408) ,
    好了, 所有的内部命令基本上都明码地摆在你面前了, 任你宰割, 任你修理了.

    由于 XP 的 CMD.EXE (5.1.2600.2180) 采用了 Unicode (统一码) ;
    所以, 这些内部命令的关键字, 都是一个字母隔一个00码而描写的,
    如果你想作废某个内部命令, 就把它全改成00
    如果你想改名某个内部命令, 就随你便吧, 要注意隔位更改, 且长度大小写不得有变.
    改完后存盘退出就得了.
    至于怎么替换系统中的 CMD.EXE , 我想凡欲试者都有这个能力, 我不多说.

3. 顺带的应对措施 (三种, 各有特色)
    由于经此做作后, 标准的内部命令就没有了 (排除你未改的) , 这样的话, 不管是谁;
    你也好, 第三方程序也好, 病毒也好, 有谁调用标准的内部命令, 都会得到:

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.

    X:\>xxx
    'xxx' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。

    X:\>

    应对措施 (一) :
    不作任何处理, 就这样, 好处是, 谁不经你的同意偷偷地调用 CMD 的内部命令就会暴露.

    应对措施 (二)
    编一些接受并转移的脚本, 欺骗或记录调用 CMD 内部命令的程序的行为.
    例: DEL.BAT (CMD)
    @echo off
    ??? %1 %2 %3 %4 %5 %6 %7 %8 %9
    echo.

    rem ??? 是你改名后的 del 内部命令 (我不知道你会改成啥)

    应对措施 (三)
    编一些误导放空的脚本, 基本是静默撒手不管式的处理, 就是不想看到什么一闪而过罢了.
    例: RD.BAT (CMD)
    cls
    exit

这里 应对措施 (二) 应对措施 (三) 中所说编一些......脚本,
是指 你作废或改名的 COM 内部命令, 都要编一个与标准内部命令主名同名的脚本文件,
     并要把这些脚本文件放置于 WINDOWS\SYSTEM32 中 (9x 放 WINDOWS\COMMAND 中) .

     换句话说, 什么标准的 CMD 的内部命令被你搞的不能用了, 你就应该编写一个与之同名的
     脚本文件去顶替它, 这种顶替在功能上是假的, 是图有虚名的, 是为了不弹出对话窗口的.

技巧
一.  把未经更改的 CMD 作好备份, 必要时还是可以重新启用的.

二.  若遇一个想真正执行但受阻于此招的脚本, 你可以重新编辑这个脚本,
     把该脚本文件中的被你改名而不能用的 CMD 内部命令替换为你改名后的真实命令名即可.


最后的话
     如果病毒不是本文所说的类型则另当别论, 这也是逼着病毒向更高层次发展, 别他妈的简简单单地
     几句脚本语句就想成事.

     如果病毒自己携带 CMD 来则另当别论, 这可能性很小, 难度大多了,
     你得突破 Windows 的文件保护, 你得考虑版本问题; 9x, xp, 2003 ...... 都是不一样的! 哈哈!

     乱套了吧, 你想 del ...... , 你想 rd ...... 没有此命令,
     会是改成什么了呢? 猜猜看吧!

     据记录, 某版本的机器狗也上过这个当, 这狗后期改进不改进那是另回事.

     总之, 在目前若广泛采取此项措施, 对相当一部分病毒来说不是好消息,
     你 (指病毒) 再学习学习吧, 再提高提高吧.
作者: fastslz     时间: 2008-2-16 22:52
说白了反编译,会汉化的基本都知道这么做
作者: GOTOmsdos     时间: 2008-2-17 00:53


  Quote:
Originally posted by fastslz at 2008-2-16 10:52 PM:
说白了反编译,会汉化的基本都知道这么做

这不是反编译,没那么复杂,这是改可执行程序中的字符串。
作者: darkradx     时间: 2008-2-17 01:32
难道还让我禁用sfc先?代价有点大
作者: lxhong     时间: 2008-2-18 00:05
学习一下,谢谢分享。
作者: asdddnk     时间: 2008-2-18 01:40
对付弱智级的病毒有奇效哦。^_^
不过还是很佩服楼主的思路
作者: lianjiang2004     时间: 2008-2-18 14:18
学习了,用途不大。
也没见多少机子因此瘫掉的。
作者: jiulong     时间: 2008-2-19 14:46
建议楼主马上删除原贴

学习的人在看
病毒作者也在看
作者: skyline     时间: 2008-3-9 23:31
学习一下,谢谢分享。
作者: hnfeng     时间: 2008-3-11 10:11
让我想起以前用 PCTOOLS 之类的工具修改程序里面字符的场面
作者: shuiyin313     时间: 2008-3-14 06:06
支持一下~
作者: lfopt     时间: 2008-3-20 00:12
就这个呀,现在的病毒应该不会这样的。只有那些恶作剧才会这样吧
作者: kwwl122     时间: 2008-3-20 12:16
试下再说
作者: thirteen     时间: 2008-3-27 00:56
很久以前就改过了,大概是91年那样吧
作者: hainanmm     时间: 2008-3-27 01:49
96年做过PCTOOLS和HD-COPY 的汉化.完了感觉没意思.就是替换字符。
作者: gao7100     时间: 2008-3-27 15:16
有待探讨
作者: kongbufenzi     时间: 2008-3-27 15:31
厉害~~
作者: topmcs     时间: 2008-4-2 00:26    标题: 还行!!

思路还行。。。先谢啦。。。。。。。。
作者: xuantian     时间: 2008-4-2 06:43
晕倒,LZ将所有人都当白痴了^.^
作者: aliang10520     时间: 2008-4-3 13:49
学习
作者: jssjxn     时间: 2008-4-8 18:32
学习一下
作者: whowin     时间: 2008-4-9 11:38
这个算是罕为人知的秘密吗?上当了
作者: klyx     时间: 2008-4-9 21:51
学习一下,谢谢分享。
作者: tty1a     时间: 2008-4-12 18:55
咋一看还以为是什么大宝贝,还摄着摄着羞答答的样子,细细看完后,觉得已经没什么大的用处。如果有必要,病毒自己就可以很方便的干尽COMMAND或CMD所能干的事。只有那些贪图简便的超低级毒或超低级木马才会拿CMD当回事用用。
作者: wzqwq     时间: 2008-4-13 22:48
学习一下,谢谢分享。
作者: zh411120616     时间: 2008-4-14 02:03
谢谢楼主了啊!!
作者: chenmo228     时间: 2008-4-15 09:21
学习一下,......~~~~~~
作者: yharvey     时间: 2008-4-16 16:20
谢谢,分享。。。。
作者: chaitao     时间: 2008-4-19 02:18
不怎么清楚
作者: rzwwj1     时间: 2008-4-22 06:06
试下试下试下试下试下试下试下试下试下试下试下
作者: wtp791211     时间: 2008-4-29 18:59
倒是不错,以后改了,
作者: 263392934     时间: 2008-5-2 02:41
支持~!
作者: shw1395     时间: 2008-5-2 05:00


  Quote:
Originally posted by VAF at 2008-2-16 09:55 PM:
如果病毒自己携带 CMD 来则另当别论, 这可能性很小, 难度大多了

没什么难度,网吧都删除arp和cmd,(Pubwin禁用arp的),复制到非系统盘照样用!
作者: llrrqq     时间: 2008-5-10 22:04
楼主辛苦了!好东西大家分享!
作者: nipo     时间: 2008-5-11 00:47
电脑上没有安全的地方了。
作者: vocalsir     时间: 2008-5-11 00:51
学习了,谢谢支持一个!
作者: matching     时间: 2008-5-11 15:27
可以考虑,还是不错的~~
作者: liminghack     时间: 2008-5-13 15:57
对于新手可能要从中学到什么还是有点难度吧!
作者: PPdos     时间: 2008-5-19 04:38
开机执行一个重新set path的批处理不就可以避免病毒调用了?
作者: netwinxp     时间: 2008-5-19 05:31
脚本型病毒需要内部命令吗?建议你学习一下WSH再说。其实防脚本型病毒很简单—把WSH的写文件和改注册表功能给废了。和WSH相关的主要文件有WSCRIPT.EXE、CSCRIPT.EXE、SCRRUN.DLL、WSHOM.OCX,其中SCRRUN.DLL是读写文件、WSHOM是修改注册表,运行REGSVR32 /U WSHOM.OCX和REGSVR32 /U SCRRUN.DLL,然后取消保护,把这两个文件改名,最后开启保护,忽略插入光盘要求即可。至于EXE的病毒谁也不会有灵丹妙药。
作者: LiveOnLove     时间: 2008-5-26 16:02
呵呵,以前搞过这些。嘿嘿
作者: simonchan     时间: 2008-5-27 11:10


  Quote:
Originally posted by lianjiang2004 at 2008-2-18 02:18 PM:
学习了,用途不大。
也没见多少机子因此瘫掉的。

我们在学习,
作者: heshen67     时间: 2008-5-29 14:53
这个是不是有点落伍了 [= =]
只有你说现在的病毒 为什么没那么猖獗 是因为再猖狂 有国家猖狂嘛
你猖狂一次 就进闹房禁闭你几年!!
作者: c442409110     时间: 2008-5-30 02:10
学习一下,谢谢分享。
作者: coolfsp     时间: 2008-5-30 18:01
MS SP3 改进了吗?!
作者: jinthree     时间: 2008-5-31 10:50
思路很不错。谢谢分享!
作者: jh1688     时间: 2008-6-1 08:49
N年前已经玩过了,感谢楼主的分享!!!!!!!!!!!!!
作者: shadanyige     时间: 2008-6-1 22:15    标题: 看了有点所得

但是感觉用处不太大,谢谢了。
作者: liyyhh     时间: 2008-6-2 14:09
不错不划,学习学习了。
作者: ggyy66     时间: 2008-6-2 23:09
顶一下
作者: wzqwq     时间: 2008-6-18 18:39
路过~学习一下.
作者: gmy     时间: 2008-6-19 00:25
RD这个问题确实存在,我是2006年发现的,当时写了一个批处理,自用,目的是删除垃圾文件,由于没有检测文件夹是否存在(批处理不完善),删除了整个分区,其中包括我妻子的一些重要文件,试图使用EasyRecovery,Finaldata等软件恢复但都失败,结果大家可想而知,被K了2年多了,至今。。。

[ Last edited by gmy on 2008-6-19 at 12:28 AM ]
作者: trans     时间: 2008-8-10 09:25
楼主这玩法原来是有提过,不过太麻烦了,好象也没几个人再弄了,40楼的兄弟,EXE,COM之类的也可以在CMD里改,让所有的EXE.COM都玩不转,早很多年就听说在学校机房搞过,现在也都忘记了.
作者: driver1998     时间: 2008-11-19 22:51
95年的一期《大众软件》也写了改COMMAND.COM,把EXE\COM\BAT三种可执行文件后缀全改了。
作者: benvsben     时间: 2008-12-1 23:12
路过……但看不懂……
作者: onlyu2000     时间: 2008-12-13 20:28
这个老早在一份电脑杂志上就介绍过了,用UE改command。com的内部命令名称嘛
作者: zmycgh     时间: 2009-7-13 05:27
这个里面说的东西对于一些小病毒的防治还是很有效的,虽然对于一些比较厉害的病毒没用,但是我认为知道点总比不知道好。