Windows 98°ÊºA³sµ²¨ç¦¡®wÄdºI§Þ¥©

 

ùþÄdºI WinSock ?

        «e¤£¤[,¹êÅç«Çªº¾Çªø¹J¨ì¤@­Ó°ÝÃD,¥L­Ì§Æ±æ¥i¥HÄdºI¨t²Î¤¤¦³ÃöWinSock send() ¤Î recv() ªº©I¥s,¤]´N¬O»¡¦bÀ³¥Îµ{¦¡©I¥sWSOCK32.DLLªº¨ç¦¡¥H«e,¥ý§â±±¨îÅv¥æ¨ì§Ú­Ì¤â¸Ì,µ¥§Ú­Ì³B²z§¹¥H«á,¦AÅý­ì¨Ó©I¥sªº°Ê§@¥i¥HÄ~Äò°õ¦æ,¦b§ä¤F¤@¨Ç¬ÛÃö®ÑÄy«á,¦ü¥G¨Ã¨S¦³¤@­Ó¥i¥H¦X¥G¥L­Ì­n¨Dªº¸Ñ¨M¤èªk,©ó¬O¬°¤F¸Ñ¨M³o­Ó°ÝÃD,§Ú°Ñ¦Ò¤F¤@¨Ç¥Ø«e§Ú©Ò¥i¥H¨ú±oªº¸ê®Æ

 

(1)    Run PC 39´Á Win32 Spy ©M DBWIN,«J«T³Ç

(2)    Windows 95 System Programming Secrects ,Matt Pietrek

(3)    Advanced Windows,Jeffrey Richter

 

 

­º¥ý,§Ú­Ì¥Øªº¬O­nÅý¨t²Î¤¤©Ò¦³¥Î¨ìWSOCK32.DLL send() ¤Î recv() ªº¨ç¦¡¥i¥H³z¹L§Ú­Ì¥[¤u¤§«á¦AÅý¥¦¥h§@¥¦¸Ó°µªº¨Æ,¹ï©ó¥Î¨ìWinSockªºÀ³¥Îµ{¦¡¹³FTP,WWWÂsÄý¾¹ªºÀ³¥Î³nÅé¥i¥H¦b¤£¥²­×§ï­ì©l½Xªº±¡ªp¤U¥¿±`¹B§@       

 

        ©Ò¹J¨ìªº²Ä¤@­Ó°ÝÃD,«K¬OWin32¨t²Î¤¤¦U­ÓProcess¤ÀÂ÷¦ì§}ªÅ¶¡ªº³]­p,¨Ï§Ú­ÌµLªkÅý¥t¤@­ÓProcess¥i¥HJmp¨ì§Ú­Ì³o­Ó¦æµ{¤¤¨Ó°õ¦æ,¦p¹Ï(¤@),¦bWindows 9x¤¤2GB¥H¤UªºªÅ¶¡¬°¨C­Ó¦æµ{©Ò¨p¦³ªº,¦pªG§Ú­Ì¤µ¤Ñ¦P®É¨Ï¥ÎAµ{¦¡»PBµ{¦¡³£¥Î¨ì¤FWSOCK32.DLLªº¨ç¦¡,¹ïµ{¦¡A¤ÎBµêÀÀ°O¾ÐÅéªÅ¶¡¨Ó»¡,¥¦­Ì³£»{¬°¥¦­ÌªºªÅ¶¡¤¤¦s¦bµÛ¥¦­Ì¦Û¤vªºWSOCK32.DLL,¦p¹Ï(¤@)©Ò¥Ü,WSOCK32.DLL¦bLoad¶i°O¾ÐÅ餧«á,¹ê»Ú¤W¬O¦s¦b2GBªºªÅ¶¡¥H¤Uªº,¦pªGµ{¦¡A¸ÕµÛ³z¹LWriteProcessMemory¥h­×§ïWSOCK32.DLL,¹ê»Ú¤W·|§ó°Ê¨ìªº¥u¦³µ{¦¡A©Ò¦bªÅ¶¡¤¤ªºWSOCK32.DLL,¹ïµ{¦¡B¨Ó»¡¬O¨S¦³¼vÅTªº,¥H§Úªº¹q¸£¨Ó»¡,·í§Ú±Ò°Ê¨â­Ó¨Ï¥ÎWSOCK32.DLLªºµ{¦¡«á,WSOCK32.DLL³£·|¦ì©ó0x785C0000 ªº¦ì§},¨Æ¹ê¤W¦¹®É¨â­ÓÀ³¥Îµ{¦¡¬O¦b2GB¦ì§}ªÅ¶¡¥H¤U³z¹LWindows°O¾ÐÅéºÞ²z¾÷¨î¨Ó¦@¨É³o­ÓDLL©Ò¦s¦bªº°O¾ÐÅé,·íµ{¦¡A¹ïDLL¼g¤J®É,«h·|³z¹LCopy-On-Write,¬°µ{¦¡A½Æ»s¤@­ÓDLLªºªÅ¶¡,©Ò¥H´Nºâ§Ú­Ì

¦bµ{¦¡A¤¤­×§ï¤FWSOCK32.DLL¹ïµ{¦¡B¨Ó»¡«o¤@ÂI¼vÅT³£¨S¦³,§Ú¤]´¿·Q¹L³z¹L­×§ïWSOCK32.DLLÀÉÀYªºImage Baseªº­È,¨Ï¥¦¥i¥H©ñ¨ì°O¾ÐÅ骺2GB¥H¤W,¥Ñ¦U¦æµ{¨Ó¦@¨É¦P¤@­ÓDLL,¤£¹L«á¨Ó¸ÕÅçÃÒ©ú³o¨Ã¤£¬O¤@­Ó¥i¦æªº¦n¤èªk

 

 


                        ùþ¹Ï(¤@)

 


¡½    ±NDLL©ñ¤J2 GB¥H¤W

 

¦b¸g¹L¤@µf«ä¦Ò«á,§Ú¨M©w¼g¤@­ÓDLL©ñ¨ì2GBªºªÅ¶¡,¥Ñ¨C­Ó¦æµ{¨Ó¦@¨É³o­ÓDLL,¥i¬O§Ú¸Ó¦p¦ó±oª¾¨t²Î¥Ø«e¦³¨º¨ÇªºProcess¦³¥Î¨ìWSOCK32.DLL©O?¦b§ä´M¤FMSDN,¤Î¤@¨Ç°Ñ¦Ò®ÑÄy«á,§Ú¨M©w³z¹LTOOLHELP¨ç¦¡(¥ÑKERNEL32.DLL©Òexport¥X¨Óªº,¦bMSDN¤¤¦³³\¦h¥i°Ñ¦Òªº¸ê°T)¨Ó§¹¦¨³o¶µ¤u§@,¥H¤U¦C¥X³¡¥÷¨ç¦¡

 

HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD h32ProcessID);

BOOL WINAPI Process32First(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);

BOOL WINAPI Process32Next(HANDLE hSnapshot,LPPROCESSENTRY32 lppe);

BOOL WINAPI Module32First(HANDLE hSnapshot,LPMODULEENTRY32 lpme);

BOOL WINAPI Module32Next(HANDLE hSnapshot,LPMODULEENTRY32 lpme);

 

¦ý¸U¨Æ­Ñ³Æ«á,§Ú¶}©l¥h«ä¦Ò¦p¦ó¥h¹ï¨t²Î¤¤ªº¦æµ{°µ¤@­Ó¤â³N,§Ú©Ò·Q¨ìªº²Ä¤@­Ó¤èªk«K¬O¥h­×§ï¨C­Ó¦æµ{ªºImport Table,¦p¤U¹Ï(¤G),§Ú­Ì³z¹LSPYSOCK.EXE§âSPYDLL.DLL¸ü¤J¨ì°O¾ÐÅ骺2GB¥H¤WªºªÅ¶¡(¸m¤J2GB¥H¤WªÅ¶¡ªº¤èªk,¥i¥H°Ñ·ÓWindows 95 System Programming Secrects Chap6¤¤ªº½d¨Òµ{¦¡)

 

SPYSOCK.EXE±µµÛ³z¹LTOOLHELP¨ç¦¡¨úªº¨C­ÓModuleªº°ò©³¦ì§},¦³¤F°ò©³¦ì§},§Ú­Ì¥i¥HÂǦ¹¨ú±o.idata°ÏªºRVA¦ì§},¶i¦Ó§ä¥X¬O§_¦³¦bµ{¦¡¤¤¨Ï¥Î¨ìWSOCK32.DLL,­Y¦³§Ú­Ì«K­×§ïImport Table ¤¤«ü¦Vsend() ¤Î recv()¨ç¦¡ªº¦ì§},§â¥¦­Ì«ü¦V§Ú­Ì©ñ¦b2GB¥H¤W¦ì§}ªÅ¶¡ªºSPYDLL.DLL¹ïÀ³ªº³B²z¨ç¦¡,·í³B²z¨ç¦¡§â§Ú­Ì©Ò­n¥[¤uªº°Ê§@³B²z§¹«á,SPYDLL.DLL¦A³z¹LGetModuleHandle("wsock32.dll") ±o¨ì ECHOAC32.EXE ¤¤WSOCK32.DLL©Ò¦bªº°ò©³¦ì§},¦¹®É­nª`·Nªº¬O,¥Ñ©ó¤ÀÂ÷¦ì§}ªÅ¶¡ªºÃö«Y¦¹®É©Ò±o¨ìªº¦ì§}¬OECHOAC32.EXE¤¤ªºWSOCK32.DLLªº¦ì§},¨Ã«D§âSPYDLL.DLL¸ü¤J¨ì°O¾ÐÅ骺SPYSOCK.EXE¤¤ªºWSOCK32.DLLªº¦ì§}(·íµM,¦¹¨Ò¤¤SPYSOCK.EXE¨Ã¥¼¨Ï¥ÎWSOCK32.DLL¤¤ªº¥ô¦ó¨ç¦¡),¦³¤FECHOAC32.EXEªº°ò©³¦ì§}«á,§Ú­Ì«K¥i¥Hºâ¥Xsend() ¤Î recv()¦b¸Ó¦æµ{¤¤ªº¦ì§},³z¹L¦p¤Uªº°Ê§@

 

_send=(HANDLE (WINAPI *) (SOCKET s, const char FAR * buf, int len, int flags))GetProcAddress(ori_wsock32,"send");      

_send(s,buf,len,flags);

 

        §Ú­Ì«K¥i§â­ì¥»send()¨ç¦¡ªº°Ê§@µ¹§¹¦¨¤F,³Ì«á¦A§â³B²z¨ç¦¡µ¹µ²§ô«á§Y¥iªð¦^­ì©I¥s¨ç¦¡,¦p¦¹«h§¹¦¨¤F¤@­ÓÄdºIªº°Ê§@,¬ÛÃö­ì©l½X§Ú©ñ¦bhttp://www.sparc14.cc.ncku.edu.tw/e9484110(¼È©wªº¡K^_^)

 


        ùþ¹Ï(¤G)

 


ùþ§¹¦¨¤F¶Ü?

               

        ·íŪªÌ­Ì´ú¸Õ¹L¥H¤W³o½d¨Ò«á·|µo²{,¬°¦ó¹ï¹³NETTERM³oÃþªº³nÅéµo´§¤£¤F§@¥Î©O?¦]¬°³oÃþªº³nÅé¬O±Ä¥Î°ÊºALoad WSOCK32.DLL,¦A°õ¦æ¸ÓDLLªº¨ç¦¡,©Ò¥H§Ú­Ì¦b¥¦­ÌªºImport Table¤¤µLªkµo²{WSOCK32.DLLªºÂܸñ,¦]¦¹¸É±Ïªº¤èªkÁÙ¦³¤@ºØ,´N¬O¬JµM­n°ÊºA¸ü¤JWSOCK32.DLL,«h¥¦¥²©w·|³z¹LLoadLibrary(¡§WSOCK32.DLL¡¨) & GetProcAddress(),©Ò¥H§Ú­Ì¥i¥H¦bImport Table¤¤§â³o¨â­ÓFunction¤]¤@¨ÖÄd¤U,¦b¹ïÀ³ªº³B²z¨ç¦¡¤¤§Ú­Ì¦A¨ÓÀˬd¬O§_¦³¥Î¨ìWSOCK32.DLLªº¨ç¦¡,¦pªG¦³§Ú­Ì¤]¥i¥H³z¹LÄdGetProcAddress()¨ÓÀˬdsend()¤Îrecv()©Ò¶Ç¦^ªº°O¾ÐÅé¦ì§}¬°¦ó,§â¸ÓÅܼƦì§}Àx¦s°_¨Ó,¨Ã«ü¦V§Ú­Ìªº³B²z¨ç¦¡,¦p¦¹¥ç¥i°µ¬°¤@­Ó¸É±Ïªº¤èªk,¤£¹L,§Ú±N¦b¤U¤@¸`¤¶²Ð¥t¤@ºØ¤âªk,¤]¥i¥H²Å¦X§Ú­Ìªº¥Øªº,¨Ñ¦U¦ì°µ¤@­Ó¼g§@¤Wªº°Ñ¦Ò

 

ùþ°£¦¹¤§¥~

 

        §Ú¨Ã¨S¦³±Ä¥Î¤W­zªº²Ä¤GºØ¤èªk¨Ó¸É±ÏµLªk¹ï°ÊºA¨Ï¥ÎDLLÄdºIªº°ÝÃD,§Ú©Ò±Ä¥Îªº¤èªk¬°³z¹L­×§ïDLL¨ç¦¡«e´X­ÓByte¨Ó¸õ¨ì§Úªº³B²z¨ç¦¡,¦ý¦¹ºØ¤èªk¦³¤@­Ó¹ú¯f,´N¬O¦pªG¸Ó¨ç¦¡¤p©ó§Ú­Ì©Ò­n¸m¤JCodeªº¤j¤p,¨º¼Ë´N·|µo¥Í¤£¥i¹w´Áªº«áªG¤F,©Ò©¯,¦b§Ú­Ì©Ò­nÄdªºsend() ¤Î recv()¨Ó»¡,³£¤j©ó§Ú©Ò­n¸m¤Jªº7 bytes,©Ò¥H³o³¡¥÷ÁÙºâ¬O¥i¥H¦wµM´ç¹L

 

        ¦p¤U¹Ï¤T,¬°§Ú­Ì©I¥s Func(int A,int B,int C)  ¤@­Ó¨ã¦³¤T­Ó¤Þ¼Æªº¨ç¦¡®É

°ïÅ|¤ºªº±¡ªp,¦Ó¦¹¨ç¦¡¹ï©I¥sªÌ¨Ó»¡·|²£¥Í¦p¤UªºAssembly Code

 

        Push C

        Push B

        Push A

        Call Func¡¦s Address

 


        §Ú­Ì¥i¥H³z¹L [EBP+0x10],[EBP+0x0C],[EBP+0x08]¦b°ïÅ|¤¤¨ú±oC,B,A¤T­Ó¤Þ¼Æªº­È¨Ó¥[¥H³B²z

ùþ¹Ï(¤T)

 

        ¦p¤U¹Ï¥|,°²¦pSend¨ç¦¡¦@¦³A,B,C¤T­Ó¤Þ¼Æ,§Ú­Ì¨Ì¬O³z¹LTOOLHELPªº¨ç¦¡¨ÓÀ°§U§Ú­Ì§ä¨ì¦b¨º­Ó¦æµ{¤¤¦³¨Ï¥Î¨ìwsock32.dll,¦pªG§ä¨ì¤F,«h¨Ì¥H¤Uªº¨BÆJ¨Ó¥[¥H³B²z

 

<Step 0> SPYSOCK.EXE³z¹LWriteProcessMemory§â7 BytesªºCode¦p¤U

MOV EAX,spy_Send//spy_Send«ü¦V§Ú­Ì¸m©ó2GB¥H¤W°O¾ÐÅé³B²z¨ç¦¡ªº¦ì§}

Call        EAX 

¶ñ¤JSend ¨ç¦¡ªº«eºÝ

<Step 1> «h¬O·íProcess°õ¦æ¨ì¨ç¦¡Send ®É,«K·|¸õ¨ì§Ú­Ì¹ïÀ³ªº³B²z¨ç¦¡<Step 2> ¦b³B²z¨ç¦¡°õ¦æ§¹¹ïÀ³ªº³B²z°Ê§@«á,§â¨ç¦¡Send«e7 BytesÁ٭쬰­ì¥»¥¼¸g­×§ï¹Lªº¼Ë¤l,¦bªð¦^Send¨ç¦¡«á¥H«KÄ~Äò§â¥¦­ì¥»ªº¤u§@µ¹§¹¦¨,¨Ã­×§ïSend¨ç¦¡ªº°ïÅ|,¥H¨ÏSend¨ç¦¡¦bµ²§ô³B²zªºµ{§Ç«á,¦bReturn¦^­ì©I¥sªºÀ³¥Îµ{¦¡«e,¥i¥H¥ý¸õ¨ì§Ú­Ìrepair_send¨ç¦¡¨Ó,¦A§âSend¨ç¦¡ªº«e7Bytesµ¹´«¦¨

MOV EAX,spy_Send//spy_Send«ü¦V§Ú­Ì¸m©ó2GB¥H¤W°O¾ÐÅé³B²z¨ç¦¡ªº¦ì§}

Call        EAX 

¦p¦¹,¦b¤U¤@¦¸¤S°õ¦æ¨ìSend¨ç¦¡®É,¨ÌÂÂ¥i¥H¦p¦¹ªº¥ý³z¹L§Ú­Ì¨Ó³B²z

<Step 3>·í¨ç¦¡Send°õ¦æ§¹­ì¥»­n°µªº¤u§@«á,¦bReturn ®É,·|¥ý¸õ¨ìrepair_send ©Ò¦bªº¦ì§},repair_send­t³d§â¨ç¦¡Sendªº«e7 Bytes¦A­×§ï¦¨ Step 0 ªº¼Ë¤l,¨Ï¤U¤@¦¸°õ¦æ¨ì¨ç¦¡Send®É,¥i¥H¦A³z¹L§Ú­Ì©Ò³]¸mªº¹ïÀ³³B²z¨ç¦¡

<Step 5> ¦b°õ¦æ§¹­×¸Éªº°Ê§@«á,«K¥Ñrepair_send¨ç¦¡­t³dªð¦^¨ç¦¡Send©Ò­nReturn¦^¥hªº­ì©I¥sÀ³¥Îµ{¦¡

 


 


 ùþ¹Ï(¥|)

 

 

        ¦p¤U¹Ï¤­

 

<Step 0> SPYSOCK.EXE¦bµo²{NETTERM.EXE©Ò¦bProcess¤¤¦³¨Ï¥Î¨ì WSOCK32.DLL®É,³z¹LWriteProcessMemory¥h­×§ï¨ç¦¡Sendªº«e7 Bytes

<Step 1> ·íNETTERM.EXE¨Ï¥ÎWSOCK32.DLLªº¨ç¦¡Send

<Step 2> ·|¥ý°õ¦æ§Ú­Ì¦bSPYDLL.DLL¤¤ªº³B²z¨ç¦¡

<Step 3> °õ¦æ§¹§Ú­Ì©Ò­n³B²zªº°Ê§@«á,«K¸õ¦^­ì¨ç¦¡Send(¦¹®É«eSend«e7 Bytes¤w³Q¸m´«¦^­ì¨Óªº¼Ë¤l,¨Ã­×§ïSendªºªð¦^¦ì§})

<Step 4> ¨ç¦¡Send¦b°õ¦æµ²§ô«á,·|¸õ¨ìrepair_send,¨Ó§â¨ç¦¡Send«e7 Bytes´«¦¨Step 0¤¤ªº¼Ë¤l,¨Ï¤U¤@¦¸¦A©I¥s¨ç¦¡Send®É¥i¥H¨Ì¦¹¬yµ{¦A«×µo¥Í§@¥Î

<Step 5> °Ê§@µ²§ô«á,¥Ñrepair_send¨ç¦¡,ªð¦^Sendªº©I¥sºÝÀ³¥Îµ{¦¡

 

        ¥»µ{¦¡­ì©l½X§Ú©ñ¦bhttp://www.sparc14.cc.ncku.edu.tw/e9484110(¼È©wªº¡K^_^)

 


 


ùþ¹Ï(¤­)

 

ùþWindows 98ªºWSOCK32.DLL

        ¦p¤U¹Ï¤»,

 

<Step 1>±oª¾LoadLibraryAªº¤Þ¼Æ¬°ws2_32.dll,ÂǦ¹§âws2_32.dll¸ü¤J¨ì¸Ó¦æµ{¤§¤¤

<Step 2>±oª¾LoadLibraryAªº¤Þ¼Æ¬°mswsock.dllÂǦ¹§âmswsock.dll¸ü¤J¨ì¸Ó¦æµ{¤§¤¤

<Step 3>±oª¾wsock32.dllªºgethostbyname¨ç¦¡·|³z¹LGetProcAddress¨ú±ows2_32.dll¤¤¹ïÀ³ªº¨ç¦¡¨Ó°Ê§@

<Step 4>±oª¾wsock32.dllªºEnumProtocolsA¨ç¦¡·|³z¹LGetProcAddress¨ú±omswsock.dll¤¤¹ïÀ³ªº¨ç¦¡¨Ó°Ê§@


       

ùþ¹Ï(¤»)

 

        785C132C¸Ó¦æ¤§¤Ï²Õͬ° MOV [785C6180],EAX  ,§Y§âLoadLibraryA(¡§ws2_32.dll¡¨)¶Ç¦^ªº­È¦s¦b¦ì©ó°O¾ÐÅé785C6180ªº¦ì¸m,¦P²z¦b785C1335¸Ó¦æ,§Ú­Ì¥i¥H¬Ý¨ì LoadLibraryA(¡§mswsock.dll¡¨)¶Ç¦^­È¦s¦b°O¾ÐÅé785C6184ªº¦ì¸m,±µµÛ§Ú­Ì¥i¥H¬Ý¨ì

 

785C1810  PUSH          785C63C0

    785C1815  PUSH          DWORD PTR [785C6180]

785C181B  CALL DWORD PTR GetProcAddressªº¦ì§}

 

        ¨ä¤¤785C63C0¬Ogethostbyname¸Ó¦r¦êªº¦ì§},¦Ó785C6180¦ì§}«h¦s©ñµÛLoadLibraryA(¡§ws2_32.dll¡¨)¶Ç¦^­È,¦pªG§A¦bHelp¤¤¬d¸ßGetProcAddress¨ç¦¡ªº¥Îªk,¥i¥H±o¨ì¦p¤U¸ê®Æ

 

GetProcAddress(

    HMODULE hModule,  // handle to DLL module

               LPCSTR lpProcName  // name of function );

         

        ¦]¦¹,§Ú­Ì¥i¥HÂǦ¹±oª¾·í§Ú­Ì¦bwsock32.dll¤¤¨Ï¥Îgethostbynameªº¨ç¦¡®É,¥¦·|§â¤u§@¦AÂ൹ws2_32.dll¤¤ªºgethostbyname¨ç¦¡¨Ó°õ¦æ

 

        ¦P²z,¥Ñ

 

785C1D95  PUSH    785C65AC

785C1D9A  PUSH    DWORD PTR [785C6184]

785C1DA0  CALL  DWORD PTR GetProcAddressªº¦ì§}

 

        785C65AC¬OEnumProtocolsA¸Ó¦r¦êªº¦ì§}, 785C6184¦ì§}¦s©ñµÛLoadLibraryA(¡§mswsock.dll¡¨)¶Ç¦^­È,¦]¦¹§Ú­Ì¤£Ãøµo²{¦b¦¹wsock32.dllªº¨ç¦¡EnumProtocolsA¬O³z¹Lmswsock.dll¤¤ªºEnumProtocolsA©Ò§¹¦¨ªº

 

        ¥Ñ³o¨Ç¤Ï²ÕĶªº¸ê®Æ¤¤,§Ú­Ìµo²{¦bWindows 98¤¤wsock32.dll¬O­Ñ³Æ¤FÂà¹Bªº¤u§@,¨ä¹ê¯u¥¿³B²zªº¤u§@¬O¸¨¦bws2_32.dll¤Îmswsock.dll¤¤,§Ú·Q¦p¦¹ªº¦w±Æ¥D­nÀ³¸Ó¬O¬°¤F¹ï¦³À³¥Îµ{¦¡ªº¬Û®e©Ê,¦bWindows98¤¤¯u¥¿¤u§@ªº¬O·sª©ªºWinSock 2(³z¹Lws2_32.dll),¦Ó¨Ï¥Î¤§«eª©¥»ªºWinSock 1.1(³z¹Lwsock32.dll)ªºÀ³¥Îµ{¦¡«h¥i¥H¦b¤£¸g­×§ï­ì©l½Xªº±¡ªp¤U,³z¹Lwsock32.dllªºÂà¹B¨Ó¨É¨ü¨ì·sªºª©¥»©Ò±a¨Óªº¦n³B,·íµM¦pªGª½±µ³z¹Lws2_32.dll¨Ó¼g§@µ{¦¡,«h¥i¥H§K¥h³o¥÷Âà¹Bªº¤u§@

 

ùþµ²»y

     ¨ä¹ê,­n¸Ñ¨MÃþ¦üªº°ÝÃD,¤èªk·íµM¤£¥u³o¨Ç,¥D­nÁÙ¬O¨Ì¦U¦ìªº¥©«ä¨Ó¥[¥HÀ³¥Î,§Ú¨Ã¨S¦³¦bWindows NT¤W´ú¸Õ§Úªºµ{¦¡½X,§Ú¥D­n¼g§@Àô¹Ò¬O¦bWindows 98¤W,¤£¹L,§Ú·Q¦bWindows NT¤WÀ³¸Ó·|¦³¤£¤Ö°ÝÃDµo¥Í!¹³NT 4.0´N¤£¤ä´©TOOLHELPªº¨ç¦¡,¦Ó¦bWindows 2000(NT 5.0)¤¤,±N·|¹ï¦¹§@¤ä´©(½Ð°Ñ¾\Microsoft System Journal November 1997,A Programmer¡¦s Perspective on New System DLL Features in Windows NT 5.0,Matt Pietrek)

 

    §Ú©Ò´£¨Ñªº¨â­Ó½d¨Ò,¬O¦bVisual C 6.0 ½sĶªºWin32 Consoleµ{¦¡,¦bµ{¦¡°õ¦æ«á,¨C¹j10¬íÄÁ«K·|¹ï¥Ø«e¦s¦bªº¦æµ{§@¤@¦¸Àˬd,¦pªG¦³¨Ï¥Î¨ìwsock32.dll«K·|¥[¥H­×§ï,µ{¦¡±Ò°Ê«á½Ð¤£­n§âSPYSOCK.EXEµ²§ô±¼,¦p¦¹¤~¥i¥H½T«O§Ú­Ì©Ò©ñ¦b2GB¥H¤WªºSPYDLL.DLL¤£·|³Q¨t²Î²¾°£,¤@¥¹SPYDLL.DLL³Q²¾°£«á,¨ä¥¦³Q§Ú­Ì©Ò­×§ïªº¦æµ{¤¤µ{¦¡½X¨Ã¨S¦³³Q§ï¦^¨Ó,©Ò¥H¥¦­Ì¨Ì·|«ü¦VSPYDLL.DLL,¦p¦¹¦b¨ä¥¦¦æµ{¸õ¨ìSPYDLL.DLL©Ò¦b¦ì§}®É,¦Ó¦¹DLL«o¤w¤£¦b­ì³B¤F,±N·|µo¥Í¤@¨Ç¿ù»~,³o³¡¥÷´_­ìªº°Ê§@,§Ú¦³ÂIÃi±o¥h¼g¥¦­Ì¡K.^_^,¦b¦¹¥ý¸ò¦U¦ì»¡ÁnSorry,¦¹¥~,§Ú¦bNetterm,Netscape,CuteFTP¡Kµ¥±`¥Îªººô¸ô¤u¨ã¤¤´ú¸Õ¹L§Úªº½d¨Òµ{¦¡½X,³£¥i¥H¶¶§Q¹B§@

 

        µ{¦¡³]­p³Ì»¤¤Hªº³¡¥÷´N¬O¦b©ó¥¦¥i¥H¥Rº¡¤FµL­­ªº·Q¹³ªÅ¶¡,§Ú¬Û«H¦b¨ä¥¦¼h­±ªºÀ³¥Î¤W,¤@©wÁÙ·|¦³§ó¦h¤H·Q¥X¦nªº¤èªk¨Ó¸Ñ¨MÃþ¦üªº°ÝÃD,¦b¦¹,§Ú¶È§â§Ú©Ò¯à·Q¨ìªº§Þ¥©´£¨Ñµ¹¦U¦ì,¦pªG¦³¥ô¦ó»Ý­n§ï¶iªº¦a¤è,Åwªï¦U¦ì¥i¥Hµ¹§Ú¤@¨Ç«ü¥¿,ÁÂÁÂ

 

        §ÚªºE-Mail:e9484110@sparc1.cc.ncku.edu.tw