[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
何谓命令表排列?

TOP

这里所说的命令表就是指cmd.exe或者command.com二进制文件内部的命令名称串
该表的排列顺序大致遵循字母序 ...
qzwqzw 发表于 2012-9-14 23:04


   
指的是这个么?

这个排列是由编译器来决定的,不是由程序员编排的,XP和Win 7并不一样。

CMD内部的确有一个表(数组),用来把命令名称的字符串映射到对应的内部函数,但是排序并不是你给出的那样。


这才是由程序员编排的,XP与Win 7一致(Win 7多了个MKLINK命令)
  1. DIR
  2. ERASE
  3. DEL
  4. TYPE
  5. COPY
  6. CD
  7. CHDIR
  8. RENAME
  9. REN
  10. ECHO
  11. SET
  12. PAUSE
  13. DATE
  14. TIME
  15. PROMPT
  16. MD
  17. MKDIR
  18. RD
  19. RMDIR
  20. PATH
  21. GOTO
  22. SHIFT
  23. CLS
  24. CALL
  25. VERIFY
  26. VER
  27. VOL
  28. EXIT
  29. SETLOCAL
  30. ENDLOCAL
  31. TITLE
  32. START
  33. DPATH
  34. KEYS
  35. MOVE
  36. PUSHD
  37. POPD
  38. ASSOC
  39. FTYPE
  40. BREAK
  41. COLOR
  42. FOR
  43. IF
  44. REM
  45. CMDEXTVERSION
  46. ERRORLEVEL
  47. DEFINED
  48. EXIST
  49. NOT
复制代码

TOP

一个Good发现
从现在的分析结果来看
真正的命令入口确实如你所言
以前的分析还真是浅尝辄止

从现在的 ...
qzwqzw 发表于 2012-9-17 09:30


从别名命令放在一起可以看出,应该是经过一定的编排,只不过带有某种随意性。

CMD命令名称串只不过是C字符串常量而已,字符串常量由编译器来处理,一般放到.data段或.rdata段,

虽然一般来说编译后字符串常量的顺序与程序中定义的顺序一致,但是这并不是必须的,

字符串常量在内存的哪个地方并不重要,因为在使用字符串常量的地方会被编译为相应的内存地址。

TOP

返回列表