Tips by http://lu0s1.3322.org

14. Help Viewer是有史以来,最烂的帮助系统。2010.9.19

VS2010和Microsoft Windows SDK for Windows 7 and .NET Framework 4带的帮助是有史以来最烂的帮助系统。即便性能再好,交叉引用再强,由于缺乏TOC的导航,看着看着就不知道看到哪里去了。反复搜索了INTERNET一下,只有名为HelpViewerKeywordIndex的工具勉强可以凑合用一下。下载地址http://visualstudiogallery.msdn.microsoft.com/en-US/4af86641-a302-4edf-9853-007bcc670b30。第一次用的人可能会找不到北。其实启动VS2010,点帮助菜单,然后找到“Help Viewer Keyword Index”那个菜单项就行了。

官方的BLOG下面有网友批注,问How long will it take that your team gets fired for the nonsense? 我也想问。。。

另外说是http://mshcmigrate.helpmvp.com/viewer有个替代品H3Viewer,这个项目已经移动到了http://visualstudiogallery.msdn.microsoft.com/en-us/4c360395-6afd-4087-94ed-cbcbebe04a20,这恐怕是目前VS2010最好用的帮助了。


13. Matt Pietrek的照片, 这位大师的照片在网上倒是不多. 2002.10.5
Matt Pietrek的照片

12.WINXP的DosDevices... by 陆麟 2002.2.20
XP的OBJECT MANAGER到底在搞什么? \DosDevices是对\??的符号联接, 但是XP下\??却不存在. 取而代之的是\Global??. 在\Global??目录下存有全局的符号联接. SESSION SPECIFIC的符号联接有自己独立的目录. 但是对\??的操作确不会失败... MS对\??的解析看来动了手脚. 空闲下来要DISASM看看.

11. 在WINDOWS XP下RegCreateKey已经无法自动创建注册表不存在的键. by 陆麟 2002.2.20
以前在代码中如果需要一个键的HANDLE, 只要调用RegCreateKey就可. 如果KEY不存在, 此调用会自动创建KEY. 在XP中行不通了. 一定要调用RegCreateKey, 并且在SAM参数中指定对KEY要有写权才能成功... 以前很多的代码要改动了.

10. 轻松崩溃WINDOWS NT/2K/XP by 陆麟 2001.10.29
10/23日在NEWSGROUP上发现了CSRSS.EXE的一个BUG. 该BUG能让任意版本的NT立刻崩溃(不管什么SERVICE PACK都有效). 该代码简单到无法更简单:
    printf("\t\b\b");
无需ADMINISTRATOR身份, 任何人只要直接从EXPLORER或者RUN窗口运行该代码. NT立即崩溃.  您可以测试一下Inside Programming提供的编译版本.:) 
(此版本对WIN2K SP3/XP SP1无效--2002.9.13)

9.利用ENUMPROCESS.EXE来协助破解光盘加密.by 陆麟 2000.10.13
在有很多光盘被加密,在光盘中提供SETUP.EXE,在开始时要求提供密码.当密码正确,才能见到加密后的目录.但是事实上加密只是使用了隐藏目录而已.如果要破解该加密,只要能够知道那个隐藏的目录名字就可.但是光盘肯定不告诉你隐藏目录的名字.现在,我们就可以利用ENUMPROCESS.EXE来协助破解.
1.运行SETUP.EXE,输入正确的密码.
2.通常是FILELIST.EXE显示隐藏目录内容.我们双击任何一EXE程序,立刻运行ENUMPROCESS.EXE.
3.检查运行程序的路径.
现在就可以知道那个隐藏目录是什么了.由于WIN9X没有工具进入该隐藏目录.我们可以通过DOS来进入该隐藏目录.从而进行COPY等活动.

8.VXD/DRIVER在98/2000下获取当前进程的命令行. by 陆麟 2000.8.3
2000零售版的KERNEL32.DLL为当前进程ANSI版命令行保留的地址为77EE0694.
一个DRIVER在FastIoDeviceControl里进行处理.也就是:MOV EAX,[77EE0694H],EAX为指向ANSI版本CMDLINE的指针.
在98零售版上,有点复杂.
要用如下代码:
MOV EAX,[BFFFC9CDCH]
MOV ECX,[EAX]
MOV EAX,[ECX+C0H]
TEST EAX,EAX
JNZ ERROR
MOV EAX,[ECX+40H]
MOV EAX,[EAX+8]
现在,EAX为指向ANSI版本CMDLINE的指针.

7.WIN2000的NTDLL.DLL by 陆麟 2000.2.13
WIN2000的NTDLL.DLL居然被标识成了WIN32 CONSOLE DLL.但是这个DLL乃是沟通环境子系统->OS的接口.绝对是NATIVE DLL.看来PE文件的属性并不是十分重要的.

6.系统启动时会初始化某些设备的 ROM.by 陆麟 1999.12.12
根据PNP规范和引导规范.BIOS在POST时,会CALL所有具有"VALID OPTION ROMS"且有"PNP EXPANSION HEADER"的设备的在板ROM映象.ROM映象允许HOOK住BIOS的INT13H服务.通常情况下.只有可能含有操作系统或引导操作系统的设备才挂接BIOS的INT13H.启动时的各种初始化导致潜在的问题,如误报硬盘大小.

5.9X/NT自动启动的程序 by 陆麟 1999.11.7
  9X:    1.CONFIG.SYS里加载的各种驱动程序.
         2.AUTOEXEC.BAT加载的各种应用程序.
         3.SYSTEM.INI里加载的VXD
         4.WINSTART.BAT里加载的各种启动程序.
         5.注册表里的驱动程序.
         6.SYSTEM.INI里各种DRV.DLL.
         7.注册表里RUNSERVICEONCE/RUNSERVICE项记载的程序.
         8.WINDOWS的SHELL.
         9.注册表RUNONCE/RUN记载的项.(HKLM/HKCU2处都有RUNONCE/RUN项)WIN.INI里的LOAD/RUN项.
         10.启动组里的项.
         11.SCHEDULE里的项.
    记住,WIN.COM里有个隐藏的启动程序.就是SCANDISK.如果上次SHUTDOWN有问题的话.SCANDISK就被启动.如果装了NORTON的话.NORTON会改写WIN.COM.用NDD替换SCANDISK.所以任何地方都无法找到启动NDD的项.因为它本身就写在了在WIN.COM里.
  NT:    1.注册表里的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services项.启动类型为0/1.依次启动.此乃驱动程序.
         2.SESSION MANAGER,加载注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Session Manager\BootExecute里记录的程序.这些是NATIVE APP.也就是不依靠WIN32 API的应用程序.
         3.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services值为3.这是正宗的SERVICE.
         4.接下来和9X的7.8.9.一样.
         5.公共的START组项.
         6.用户私有的START组项.
         7.同9X的11.
    这是NT的WIN32环境下自启动的东西.如果启动了DOS CONSOLE.还有一大堆的东西会用到.不写了.写特罗伊的朋友可有用了.:)经管注册表也许不能改写.但是通常可执行文件的读写授权通常是漏洞.

4.NTFS里的文件名  by 陆麟 1999.8.22
  今天才知道,原来NTFS下"FILENAME","Filename","filename"是可以同时存在于同一目录下的:)但是,任何一个WIN32的程序都不能在同一目录下创造出来.只有POSIX程序可以:D 请在编译POSIX程序时选POSIX子系统.一试就知道了:)

3.95/98的LoadLibrary()  by 陆麟 1999.8.22
  探索一下载入DLL失败的可能性.
  1.DLL 含有大于0x7FFF资源时,失败.
  2.ANSI EXE调用UNICODE DLL,失败.
  3.DLL含有__declspec(thread),失败.
  4.32B DLL调用16B DLL,失败.
  5.DLLMAIN返回错误,失败.

2.NT下的SCREEN SAVER.  by 陆麟 1999.8.2
    NT下的SCREEN SAVER运行在LOGON的桌面下. 所以如果SCREEN SAVER被杀,显示的将只是光秃秃的桌面.而且,SCREEN SAVER运行时,桌面处于被锁状态.意味者其他进程不能访问用户桌面.

1.加速NT的SHUTDOWN. by 陆麟 1999.7.21
   有时候安装软件,需要多次重启动NT.但是NT的REBOOT实在太慢了.尤其是加载了很多的SERVICE以后.更加明显.如果系统装的是SMALL BUSINESS SERVER,启动简直是受罪.时间够你喝咖啡了.当然,如果能够找到窍门的话,那就好多了:) (想来当时和HUANG FEI一起到人家那里装SBS,REBOOT时几个人在屋子里走来走去,无所事事,真有趣)
   NT在KILL SERVICE是都会利用一个值,就是WaitToKillServiceTimeout,以千分之一秒计.正常情况下,NT将等待一个SERVICE关闭,除非该SERVICE60秒(缺省值为60000)还没有停止,才强行关闭该SERVICE.但是我们所遇到的正常情况下,如果一个SERVICE在遇到停止信号后2秒还没结束清理工作,那可能已经大有问题了.所以,将这个值减小,一般不会出什么问题.那么这个值在那里呢?
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
"WaitToKillServiceTimeout"="1000"
在如上路径可以找到.1000是我自己的NT SERVER的值,从来不出问题.大家可以参考.改变该值便能大大提高NT系统的REBOOT速度.

  ? ? ?