Windows 98®Ö¤ß¤¶²Ð
ùþ·§Æ[
°O±o¦b¦Û¤v¹q¸£¸Ë¤WWindows 95«á,³}®Ñ§½®É§Ú¬Ý¨ì¤FAndrew Schulman
©Ò¼gªºUnauthorized
Windows 95 Developer¡¦s Resource Kit,·í®É¹ï¥¦¸Ì±ªº¤º®e·P¨ì«D±`ªºÅå³Y,¤]«D±`´Ü¨Ø§@ªÌ¹ïWindows§@·~¨t²Î¤F¸Ñ¤§²`,³o¤@°}¤l¦Û¤v¦bWindows 98¤W±ªº¾Ç²ß¹Lµ{,¤]¦³µÛ¤@ÂI¤ß±o§Æ±æ¥i¥HÂǦ¹¾÷·|¸ò¤j®a¤À¨É¤@¤U,¬Û«H¦b¸g¹L³o¨Ç¹ïWindows 98¨t²Îªº¤¶²Ð¤§«á,¥i¥H¦³³oÓ¾÷·|ÅýŪªÌ̧ó»{ÃÑ¥¦¤@ÂI,·íµM,Windows 98»PWindows NT©Î¥¼¨Ó±N·|¥X²{ªºWindows 2000(¬[ºc¥ÑNT¦Ó¨Ó)¦b®Ö¤ß¼g§@¤W¬Û®t«D±`¦h,¦]¦¹,³o¦¸¤å³¹©Ò´£ªº¤@¨Ç¹ïWindows 98¹B§@¤è¦¡,¨Ã¤£¾A¥Î©óWindows NT ©Î±N·|¥X²{ªºWindows 2000
º¥ý,¥HWnidows 98ªº¬[ºc¨Ó»¡¦p¹Ï(¤@),§Ú§â¥¦µ¹¤À¬°¥|Ó¼h¦¸,º¥ý¬O
³Ì¤U¼hVMM32.VXD¤Î¨ä¥¦©ÒLoad¶i¨ÓªºVXD,³o³¡¥÷¬O¦ì©ó¨t²ÎRing 0ªº¦ì¸m,¨ä¤¤³Ì«nªº·íµM¬OVMM32.VXD³oÓÀɮפF,¥¦¥i»¡¬O¾ãÓWindows 98(95)³Ì«nªº¤@ÓRing 0ªº®Ö¤ß,¤£¹L¥¦¨Ã¤£¬O¤@Ó³æ¯ÂªºVXD,³á¡K.©Î¬OÀ³¸Ó³o¼Ë»¡,¥¦ÓÀɮ׮榡¨Ã¤£¬O¤@ÓVXD(LE®æ¦¡),¤£¹L¥¦«o¬O¦hÓVXDªº¦XÅé(µy«á±N·|¹ï³o³¡¥÷§@Ó»¡©ú),¦A¨Ó«K¬O²Ä¤G¼h,³o¤@¼h¤¤ªºkrnl386.exe»P³Ì¤U±¤@¼hVMM32.VXD¬OÄÝ©óDPMI Client »P DPMI ServerªºÃö«Y,º¥ýVMM32.VXD·|¦b±Ò°Êªº¹Lµ{¤¤¥h°õ¦ækrnl386.exe(¤£¹L krnl386.exe¬ONE®æ¦¡ªº°õ¦æÀÉ,¤]´N¬O»¡¥¦¬OÓ16-bitªºµ{¦¡),¦ÓAndrew Schulman¤]¥Hcommand.com§âkrnl386.exeµ¹¸m´«±¼,¦Ó²£¥Í¤F¤@Ó¦bv86 ¼Ò¦¡¤UªºDOS,¦¹ªk§Ú¦bWindows 98¤¤¤@¼Ë¥i¦æ,¦³½ìªº¬O¦pªG§A¦³°õ¦æWinICEªº¸Ü,§A±N·|±o¨ì¤@Ó¨S¦³Windows¬É±ªºDOS V86¾Þ§@Àô¹Ò¤U¤§WinICE,§A¥i¥H¦b¡¨C:\¡¨ªº±¡ªp¤U¥HCtrl+D¶i¤JWinICE,¦b¹Ï(¤G)<Step 1>§Ú¥HEXEHDR³oÓ·L³nªº¤u¨ã³nÅé¨Ó¬d¬Ýkrnl386.exe,¦Ókrnl386.exe¦b°O¾ÐÅé·í¤¤ªº¼Ò²Õ¦WºÙ¬°Kernel,¦b¹Ï(¤G)<Step 2>¤¤§Ú¨q¥X¤Fkrnl386.exeªºÀÉÀY,¥HÃÒ©ú¥¦¬OÓNE®æ¦¡ªº¨Æ¹ê,³Ì«á¦b¹Ï(¤G)<Step 3>§Ú§âkrnl386.exe¤¤ªºEXITKERNEL¨ç¦¡µ¹³¡¥÷¤Ï²ÕĶ¥X¨Ó,«Ü©úÅ㪺krnl386.exe¬OÓ¦bV86¼Ò¦¡¤Uªº16 bitµ{¦¡,·íµM,¦P¼hªº¥ç¥]¬A¤FKernel32.dll(¦bWindows System Programming SECRECTS<Matt PietrekµÛ>²Ä¤»³¹¹ïVWIN32.vxd
,Kernel32.dll,krnl386.exe¦³«D±`¤£¿ùªº»¡©ú),¦A¤W±¤@¼h«K¬O§Ų́ϥΪ̦bWindows 98¤¤©Ò¬Ý¨ìªºShell(¦bsystem.ini¤¤Shell = explorer.exe),³o³¡¥÷´£¨Ñ¤F§Ų́C¤Ñ©Ò¬Ý¨ìªº¤u§@¦C,¶}©l¥\¯àªí¿ï³æ¡K.µ¥µ¥¤Íµ½ªº¤¶±,·íµM,¦bAndrew Schulman®Ñ¤¤¤]¥HWinFile.exe§âExplorer.exe¨ú¥N±¼,´«¤F¤@ÓShell«á,Windows 98(95)©Ò§e²{¥X¨Óªº¨Ï¥ÎªÌ¤¶±«K¨S¦³ì¥»ªºExplorer.exe³o¼Ëªº«K±¶,³s쥻¦s¦b¤U¤èªº¤u§@¦C³£¤£¨£¤F,¦³¿³½ìªºÅªªÌ¤]¥i¥H¦Û¦æ§ó§ï,¦b³Ì¤W±¤@¼h«K¬OWin 32À³¥Îµ{¦¡©Ò¦bªº³¡¥÷,¦b³o³¡¥÷ªºµ{¦¡©Òn°õ¦æªº³\¦h©I¥s³£·|³z¹L¤U±¦U¼h¦¸ªº³q¤O¦X§@¤~¦³¥i¯à§¹¦¨,¤×¨ä¬O³Ì«áªº¨â¼h,§ó¬OWin32À³¥Îµ{¦¡°õ¦æ®É¤£¥i¯Ê¤Öªº

¹Ï(¤@)

¹Ï(¤G)
ùþDriver©Ò©I¥sªºVXD Service
Windows 98¤¤¹ï®Ö¤ßªº¨t²Î©I¥s¬O¥Ñ20¸¹¤¤Â_¨Ó¹ê²{ªº¦p¤U¹Ï(¤T),¦b¹Ï(¤T)<Step 1>§ÚÌ¥i¥H¬Ý¨ì
VMMCall
_Allocate_Device_CB_Area, <<SIZE VwatchD_CB_STRUCT>, 0>
¦A¸g¹LDDK(Device Driver Kit)½sĶ«á,§Ú̧â¸Ó¦æ¤Ï²Õͦ^¨Ó·|¬Ý¨ì¥H¤Uªº²Õ¦X»y¨¥µ{¦¡½X
6A 00 push 0
6A 04 push 4
A7 00 01 00 dd 000100A7
«e¨âÓPushªº°Ê§@¬O¤À§O§â¨ç¦¡_Allocate_Device_CB_Area¤Þ¼Æ¥Ñ¥k¦Ó¥ª±À¤J°ïÅ|,±µ¤U¨Óªº20¸¹¤¤Â_«K¬O¦bWindows 98(95)¨t²Î¤¤¥Î¨Ó©I¥sVXD Service,¦Ó20¸¹¤¤Â_¤§«áªº000100A7 ,0001¬°´£¨Ñ¸ÓVXD ServiceªºDevice ID(¥i¥ÑDDKªºvmm.inc¸ÓÀɨú±oWindows¨t²Î©Ò´£¨Ñ¤§VXDªºDevice ID¸ê®Æ),00A7¥Nªí§Ú̩ҩI¥sªº¬°¸ÓVXDªºService Table¤¤²Ä´X¸¹ªºService(¥i¦b¦UincÀɤ¤§ä¨ì¬ÛÃö¸ê®Æ),¦p:¥ÑDevice ID 0001§Ú̱oª¾¦¹ªA°È¥ÑVMM©Ò´£¨Ñ,¦]¦¹¦bVMM.inc¤¤§Ú̧ä¨ìªº²Ä00A7ÓService(¥Ñ0¶}©l)¬°_Allocate_Device_CB_Area,µ§ªÌ¦b¼g³o½g¤å³¹®É¤]»s§@¤F¤@Ó¤u¨ã³nÅé,¥i¥HÀ°¤j®a¬Ý¬Ý©Ò¨Ï¥ÎªºVXD©I¥s¤F¨º¨ÇVXD Service,¨Ãªþ¤Wì©l½X,³o°¦µ{¦¡§Ú§â³\¦hªºincÀɤ¤ªºDevice ID¤ÎService¦WºÙµ¥¸ê®Æ©ñ¦b¸Ì±¤F,¤£¹L¦³¤@¤p³¡¥÷¨S¦³¥þ³¡¸m¤J,¦ý¥Ø«e¨Ó»¡¹ï¦U¦ìÀ³¸Ó¬Oº¡°÷¥Î¤F,¦pªGŪªÌ¦³¨ä¥¦»Ýnªº¸Ü¥i¥H¦Û¦æ¥[¥HÂX¥R,¨ä¥¦¦³ÃöVXDªº¸ê®Æ¥i¦Û¦æ°Ñ¾\DDK©Î¼g§@VXDªº±M·~®ÑÄy,·íµM,¦pªG¤âÃ䦳Windows 95 System Programming
Secrects³o¥»®ÑªºÅªªÌ,¤]¥i¥H½¾\¤@¤U¦b²Ä9³¹¤¤Matt Pietrek¹ïVXDªº¤¶²Ð
¹Ï(¤T)<Step 2>¬°§Ú¥HVTOOLD¬°¶}µo¤u¨ã,¨ä¤¤¥H¤U³o¦æµ{¦¡½X
return
(IFSMgr_RegisterCFSD(Mount, IFSMGRVERSION, DeviceNames) != -1);
¸g¹L½sĶªº¤@Ó¨Ò¤l,¦Ó¹Ï(¤T)<Step 3>¬°½sĶ«á©Ò²£¥Íªº¾÷±ñ½X»P¸g¹L¤Ï²ÕĶ«áªº²Õ¦X»y¨¥½X,¨ä¤¤§Ún´£¿ôªº¤@ÂI¬°³o¬O¸ÓVXD¥¼¸ü¤J°O¾ÐÅé«e©Ò¤Ï²ÕĶªºµ²ªG,¦b¹Ï(¤T)<Step 4> ¤¤§ÚÌ«K¥i¥H¬Ý¨ì³o¬qCode¦b¸ü¤J°O¾ÐÅé«á,¬ÛÃö¸ê®ÆªºÈ«K³Q¸ü¤J¾¹µ¹¶ñ¤J¤F,¨ä¤¤
0028:C0148990 E8 C7 0A 00 00 call
C014945C
³o¦æ·|¥h©I¥s¹Ï(¤T)<Step 5>
0028:C014945C CD 20 int
20h
0028:C014945E 62 80 40 00 DD 00408062
¦Ó¦b¬d¹LVMM.inc«á±oª¾Device ID=0040¬°IFSMgr,¦]¦¹§Ú̦A¥h¬dIFSMgr.inc
«K¥i¥H±oª¾Service½s¸¹¬°62ªº¨ç¦¡¦WºÙ¬°IFSMgr_RegisterCFSD,¦ÓService½s¸¹ªº³Ì°ª¦ì¤¸Y³Q³]¬°1(¦p8062) ,«h¦¹VXD Service©I¥s·|³Q׸ɬ°VxDJmpªº«ü¥O

¹Ï(¤T)
ùþVMM32.VXD?
¹Ï(¥|)<Step 1>¤¤,§ÚÌ¥i¥H¬Ý¨ì¨ä¹êVMM32.VXD¬O¦hÓVXDªº¦XÅé,¥¦¤£¦ý¬O¤@ÓDMPI Server,¤]´£¨Ñ¤F°O¾ÐÅéºÞ²z,±j¨î¦h¤uªº¯à¤O,Windows 98(95)¨t²Î¤¤«Ü«n¤]«Ü±`¨£ªºVMM³oÓVXD«K¬O¥Ñ¥¦©Ò´£¨Ñ
¥i¬OVMM32.vxd¨Ã¤£¬O¤@ӼзǪºVXD®æ¦¡,¥Ñ¹Ï(¥|) <Step 2>§Ú§âVMM32.VXD§ï¦W¬°VMM32.exe¦A³z¹LVisual C¤¤Dumpbin¤u¨ãµ{¦¡,¥H¦p¤Uªº«ü¥O°õ¦æ
C:\>dumpbin
vmm32.exe
©Ò±o¨ìªº°T®§±oª¾¦b·L³nªº¤u¨ãÀË´ú¤§¤UVMM32.VXD³ºµM¬OÓDOS¤Uªºµ{¦¡,³o¼Ëªºµ²ªGˬO»P¥¦ªºÀɦW¦³ÂI¤£¤@P,¤£¹LVMM32.VXD¬O¦bDOS¤U³Q±Ò°Ê¦Ó¶i¤J«OÅ@¼Ò¦¡¸ü¤JWindows¾ãÓ¨t²Îªº,Y¥HBorland Cªº©ÒªþªºTdumpµ{¦¡
c:\>tdump
vmm32.exe
Turbo
Dump Version 5.0.16.4 Copyright
(c) 1988, 1998 Borland International
Display of File VMM32.EXE
Old
Executable Header
DOS
File Size
E29B1h (928177. )
Load
Image Size
F800h ( 63488. )
Relocation
Table entry count
0034h ( 52. )
Relocation
Table address
0040h ( 64. )
Size
of header record
(in paragraphs)
0020h ( 32. )
Minimum
Memory Requirement (in paragraphs)
1400h ( 5120. )
Maximum
Memory Requirement (in paragraphs)
FFFFh ( 65535. )
File
load checksum
0000h ( 0. )
Overlay
Number
0000h ( 0. )
Initial
Stack Segment (SS:SP)
0F71:0400
Program
Entry Point
(CS:IP) 0000:1625
³£¥i¥HÃÒ©úVMM32.VXD¬ODOS°õ¦æÀɪºMZ®æ¦¡,¦Ó«DVXDªºLE®æ¦¡,YŪªÌ̦³¿³½ì¤]¥i¥H§Q¥Î¥H«eDOS¤U¥Îªº¤Ï²Õͤu¨ã¨Ó¤Ï²ÕĶVMM32.VXD¬Û«H¤@©w·|¦³¤£¤Ö·N¥~ªºÅå³ß,¤£¹L¥Ø«eªºVMM32.VXD¦pªG¥ÎAndrew Schulman©Ò¼gªºw3mapµ{¦¡¨Ó´ú¸Õªº¸Ü,¨Ã¤£·|±o¨ìVMM32.VXD¤¤©ÒÄÀ¥Xªº¥¿½T¸ê®Æ,¦³Ãö³o³¡¥÷ªº°ÝÃD§Ú·|¦b¤å³¹ªºµ²§À³B§â§ÚÆ[¹î©Ò±o»P¦U¦ì°µ¤@Ó»¡©ú,³Ì«á,¦bUnauthorized Windows 95 Developer¡¦s Resource Kit
³o¥»®Ñ¤¤¹ïVMM32.VXD¦³µÛ«D±`ºë±m¹ý©³ªº¤¶²Ð«Üȱo¹ïWindows 9X¨t²Î¦³¿³½ìªºÅªªÌ¤@±´¨s³º,¦bWindows 98¤¤VMM32.VXD¦h¥X¤F¤@Ó¦W¬°NTKERNªºVXD,NTKERN¥]§t¦bVMM32.VXD¤¤,¦Ó¥¦¥¿¬OWindows 98¥i¥H¦P®É¤ä´©VXD¤ÎWDM¨âºØDriverªº«nÃöÁä

¹Ï(¥|)
¤§«e,§Ú´¿»¡¹LVMM32.VXD¥i¥H¥Ñ¹L¥hDOS¤Uªº¤Ï²Õͤu¨ã¨Ó³B²z,¥Ñ¹Ï(¤) ¦U¦ì¥i¥H¬Ý¨ìVMM32.VXD¤¤³¡¥÷¤Ï²ÕĶªºµ²ªG,º¥ý¹Ï(¤)<Step 1>¬OVMM32.VXD¶i¤J«OÅ@¼Ò¦¡ªº¤@¤p¬qCode,·íµM,¦pªG¦bVMM32.VXD¤§«e¤w¦³¨ä¥¦µ{¦¡¥ý¤Á¤J«OÅ@¼Ò¦¡ªº¸Ü(¦p:EMM386.exe),«h·|¦³¤@¨Ç¨ó½Õªº¹Lµ{¨ÓÅýVMM32.VXD¥i¥H¶¶§Q¨ú±o«OÅ@¼Ò¦¡ªº±±¨îÅv,¦Ó¹Ï(¤)<Step 2>«h¬OVMM32.VXD°h¥X«OÅ@¼Ò¦¡ªº¤@¬qCode,¹Ï(¤)<Step 3>¬O¹ï¹Ï(¤)<Step 2>³Ì«á¤@¦æLIDT«ü¥O©Ò·|¥Î¨ìªºIDTR ¼È¦s¾¹¦bMicrosoft's 80386/80486
Programming Guide¤¤©Ò´£¨ìªº»¡©ú,¦pªG¦U¦ì´¿¸g¼g¹L¤Á¤J«OÅ@¼Ò¦¡µ{¦¡ªº¸Ü,¬Û«H¹ï¹Ï(¤)<Step 1>¤¤¤Á¤J«OÅ@¼Ò¦¡ªº°Ê§@¤@©w¤£·P¨ì¯¥Í,¦pªGŪªÌÌ»Ýn³o¤è±¸ê®Æ¥i¸Ü,¤]¥i¥H¥hºô¸ô¤W(¹³¤@¨ÇBBS¯¸¤¤¦³Ãöµ{¦¡³]pªOªººëµØ°Ï)§ä¨ì³\¦h¦³¥Îªº¸ê®Æ,µ§ªÌ·í¦~ªì¦¸±µÄ²¨ì«OÅ@¼Ò¦¡ªºµ{¦¡³]p®É¤]¬O¦bºô¸ô¤W§ä¨ì³\¦h¤£¿ùªº¤å³¹,¦bŪ¤F³o¨Ç¸ê®Æ«á¦Û¤v¦A¿Ë¤â¥h¼g§@ÅçÃÒ,³z¹L³o¨Ç¹Lµ{¬Û«H¦U¦ì¤@©w¥i¥H¹ï«OÅ@¼Ò¦¡¦³ªì¨Bªº¤F¸Ñ,¦b¦¹§Ú´N¤£¦A¦h°µ»¡©ú¤F¡K^_^

¹Ï(¤)
ùþWindows 98¤ä´©¨âºØ®æ¦¡ªºDriver
¦bWindows 98 DDK¤¤¦³¤£¤Ö¦³¥Îªº½d¨Ò ¥i¥H¨Ñ¤j®a°Ñ¦Ò,¦b¦¹§Ú±N°w¹ïWDM(Win32 Driver Model)ªº¨ç¦¡¬O¦p¦ó¦bWindows 98¤¤³Q¹ê²{¨Ó°µÓ»¡©ú,§Æ±æ¥i¥H¹ï¦U¦ì¦³©ÒÀ°§U,º¥ý¥Ñ¹Ï(¤»)<Step 1>§Ú̽sͤ@ÓWDMªºDriver,¦Ó³o¥H¤U¤@¤p¬qµ{¦¡½X
ntStatus
= IoCreateDevice(DriverObject,
sizeof(DEVICE_EXTENSION),
&deviceNameUnicodeString,
FILE_DEVICE_UNKNOWN,
0,
FALSE,
DeviceObject);
«h¬O§ÚÌ©ÒnÆ[¹îªº¹ï¶H,¦b¹Ï(¤»)<Step 2>¤¤,¬O§Ú§â³o¬qµ{¦¡½X¸g¹L½sĶ«á²£¥Íªº°õ¦æÀɤϲÕĶ«áªºµ²ªG
º¥ý,¦bWindows 98¤¤WDMªºDriver¨Ã¤£¹³ì¥»VXD©Ò¥ÎªºLEÀɮ׮榡,WDM¬°PEÀɮ׮榡,¦]¦¹§ÚÌ¥i¥H³z¹L¤Ï²ÕĶPEÀɪº¤u¨ã³nÅé¨Ó§âWDM Driver¤Ï²Õͦ^¨Ó,±µµÛ§Ú̬ݨì³o¦æ
FF1578020100 CALL DWORD PTR [NTOSKRNL=>IoCreateDevice]
¦bPEÀɮ榡¤¤,§ÚÌ¥i¥H¥ÑImport Table±oª¾³oÓPEÀɮצb°õ¦æ®É·|©I¥s¨º¨ÇÀɮשҴ£¨Ñªº¨ç¦¡(·íµM,¦bWin32ªºµ{¦¡¤¤,¦pªG³z¹LLoadLibrary..µ¥,°ÊºAªº¤è¦¡¨Ó¸ü¤Jªº¸Ü,¦bImport Table¤¤¨Ã¤£·|°O¿ý),§ÚÌ¥i¥Hµo²{¦bWindows 98¤¤½s͹LªºWDM Driver¥¦¦bImport Table¤¤¬O§âIoCreateDevice³o¨ç¦¡°O¿ý¤F¥ÑNTOSKRNL.EXE¨Ó´£¨Ñ,¥i¬O¦bWindows 98¤¤¨Ã¨S¦³³o¼Ë¤@Ó¹ê»ÚªºÀɮצs¦b,¦]¦¹,¦b¹Ï(¤C)<Step 1>§ÚÌ¥i¥H¬Ý¨ì¦b§â³oÓDriver¸ü¤J¨ì°O¾ÐÅé«á,§Ú̵o²{
FF15380000FF CALL [FF000038]
¦ÓFF000038¬O¦bImport Table¤¤,¦Ó¸Ó³B«h°O¿ýIoCreateDevice¨ç¦¡¦b°O¾ÐÅ骺¦ì§},¥Ñ¹Ï(¤C)<Step 2>§ÚÌ¥i¥H¬Ý¨ì
0028:FF000038 DC 98 29 C0
¦ÓC02998DC¥¿¬O¦bWindows 98¤¤IoCreateDevice¨ç¦¡©Ò¦bªº°O¾ÐÅé¦ì§},±µµÛ§Ú̦b(¤C)<Step 3>¬Ý¨ì³oÓ¦ì§}ªº¤º®e,¦Ó³oÓ°O¾ÐÅé¦ì§}¥¿¬O¦bNTKERN³oÓVXD©Ò¦bªº°O¾ÐÅé¦ì§}¤¤,¥Ñ¦¹,§Ṳ́]¥i¥HÅçÃÒ¦bWindows 98¤¤NTKERN³oÓVXD¥i¥Î¨Ó´À¥NNTOSKRNL.EXE¦bWindows NT¤¤´£¨Ñ¹ïµ¥¨ç¦¡ªº¯à¤O,¥H¹F¨ì¨âÓOS¥i¥H¦@¥Î¦P¤@ºØ®æ¦¡Driverªº¥Øªº,¥Ñ1997¦~11¤ë Microsoft System
Journalªº¤@½g¤å³¹¡§Surveying the New Win32 Driver Model for
Windows 98 and Windows NT 5.0¡¨¤¤©Ò´£¨ìªº¡¨Unfortunately,drivers for
standard Windows-based devices must fit into an older architecture that¡¦s
incompatible with this new kernel-mode support. ¡K¡K¡K.¡¨,¥Ñ¦¹§ÚÌ¥i¥H±oª¾¦bWindows 98¤¤¹ï©ó¼Ð·ÇªºÅX°Ê¸Ë¸m(¦pÁä½L,ºÏºÐ¾÷¡Kµ¥ªºÅX°Êµ{¦¡),±NµLªk³z¹L·s¬[ºcªºDriver¨Ó¥R¥÷¹ê²{,¦Ó»Ý³z¹L¥H©¹VXD©Òª½±µ¨Ï¥ÎªºVXD Service
¦¹¥~,¦b¹Ï(¤K)<Step 1>§ÚÌ¥H³o¤@¤p¬qµ{¦¡½X¬°¨Ò¤l
pPHist->timeStamp
= KeQueryPerformanceCounter(NULL);
¦b¹Ï(¤K)<Step 2>§Ú̬ݨì½sĶ«áªºµ²ªG,¨ä¤¤KeQueryPerformanceCounter¥ÑImport Table¤¤¥i¥H¬d±o¬O¥ÑHAL.DLL(HAL.DLL¬°NT©Ò¾Ö¦³ªºÀÉ®×)©Ò´£¨Ñªº¨ç¦¡,¦ý¦b¹Ï(¤K)<Step 3>¥i¥H¬Ý¨ì³o¬qµ{¦¡½X³Q¸m¤J°O¾ÐÅé«áªºµ²ªG,¦P¼Ëªº¦b¹Ï(¤K)<Step 4>¥i¥H±oª¾KeQueryPerformanceCounter¦bWindows 98¤¤©Ò¹ïÀ³ªº³B²z¨ç¦¡°O¾ÐÅé¦ì§},¹Ï(¤K)<Step 5>