Windows編程機(jī)制(2)_第1頁(yè)
Windows編程機(jī)制(2)_第2頁(yè)
Windows編程機(jī)制(2)_第3頁(yè)
Windows編程機(jī)制(2)_第4頁(yè)
Windows編程機(jī)制(2)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第5講網(wǎng)絡(luò)安全編程講網(wǎng)絡(luò)安全編程2 2基于基于TCPTCP的的socketsocket編程編程服務(wù)器端程序:服務(wù)器端程序:1、創(chuàng)建套接字(socket);2、將套接字綁定到一個(gè)本地地址和端口上(bind);3、將套接字設(shè)為監(jiān)聽(tīng)模式,準(zhǔn)備接收客戶請(qǐng)求(listen);4、等待客戶請(qǐng)求到來(lái);當(dāng)請(qǐng)求到來(lái)后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字(accept);5、用返回的套接字和客戶端進(jìn)行通信(send/recv);6、返回,等待另一客戶請(qǐng)求;7、關(guān)閉套接字。3 3基于基于TCPTCP的的socketsocket編程編程客戶端程序:客戶端程序:1、創(chuàng)建套接字(socket);2、向服務(wù)

2、器發(fā)出連接請(qǐng)求(connect);3、和服務(wù)器端進(jìn)行通信(send/recv);4、關(guān)閉套接字。4 4基于基于C /SC /S模型的時(shí)序圖模型的時(shí)序圖5 5基于基于UDPUDP的的socketsocket編程編程服務(wù)器端(接收端)程序:服務(wù)器端(接收端)程序:1、創(chuàng)建套接字(socket);2、將套接字綁定到一個(gè)本地地址和端口上(bind);3、等待接收數(shù)據(jù)(recvfrom);4、關(guān)閉套接字。6 6基于基于UDPUDP的的socketsocket編程編程客戶端(發(fā)送端)程序:客戶端(發(fā)送端)程序:1、創(chuàng)建套接字(socket);2、向服務(wù)器發(fā)送數(shù)據(jù)(sendto);3、關(guān)閉套接字。7 7套接

3、字系統(tǒng)調(diào)用套接字系統(tǒng)調(diào)用創(chuàng)建套接字創(chuàng)建套接字socket( )指定本地地址指定本地地址bind( )建立套接字連接建立套接字連接connect( )接收連接請(qǐng)求接收連接請(qǐng)求listen( )和accept( )發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)write( )、writev( )、send( )與 sendto( )、sendmsg( )接收數(shù)據(jù)接收數(shù)據(jù)read( )、readv( )、recv( )和recvfrom( )、recvmsg( )其他系統(tǒng)調(diào)用其他系統(tǒng)調(diào)用gethostbyname( )、getservbyname( )8 8WSAStartup( )WSAStartup( )函數(shù)說(shuō)明函數(shù)說(shuō)明in

4、t int WSAStartupWSAStartup( WORD ( WORD wVersionRequested, , LPWSADATA LPWSADATA lpWSAData ); );wVersionRequestedwVersionRequested:準(zhǔn)備加載的Winsock庫(kù)的版本。高位字節(jié)指定所需要的Winsock庫(kù)的副版本,而低位字節(jié)則是主版本??捎肕AKEWORDMAKEWORD(x,y)(其中,x是高位字節(jié),y是低位字節(jié))方便地獲得wVersionRequested的正確值。lpWSADatalpWSAData:指向WSADATA結(jié)構(gòu)的指針,WSAStartup用其加載的庫(kù)

5、版本有關(guān)的信息填在此結(jié)構(gòu)中。9 9typedef struct WSAData WORD wVersion; WORD wHighVersion; char szDescriptionWSADESCRIPTION_LEN+1; char szSystemStatusWSASYS_STATUS_LEN+1; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; WSADATA, *LPWSADATA; WSADATAWSADATA結(jié)構(gòu)結(jié)構(gòu)1010wVersionwVersion:設(shè)成要使用的W

6、insock版本wHighVersionwHighVersion :現(xiàn)有的Winsock庫(kù)的最高版本。szDescriptionszDescription和szSystemStatusszSystemStatus:由特定的Winsock實(shí)施方案設(shè)定,事實(shí)上沒(méi)有用。iMaxSocketsiMaxSockets:最多可打開(kāi)多少套接字(建議不使用)iMaxUdpDgiMaxUdpDg:數(shù)據(jù)報(bào)的最大長(zhǎng)度(建議不使用) (數(shù)據(jù)報(bào)的最大長(zhǎng)度應(yīng)該通過(guò)WSAEnumProtocols來(lái)查詢協(xié)議信息。同時(shí)最多可打開(kāi)套接字的數(shù)目不是固定的,與可用物理內(nèi)存的多少有關(guān)。lpVendorInfolpVendorInfo

7、:廠商信息預(yù)留WSADATAWSADATA結(jié)構(gòu)結(jié)構(gòu)1111如果WinSock.dll或底層網(wǎng)絡(luò)子系統(tǒng)沒(méi)有被正確初始化或沒(méi)有被找到,WSAStartup將返回WSASYSNOTREADY;此函數(shù)允許協(xié)商WinSock版本:若請(qǐng)求的版本等于或高于DLL所支持的最低版本,WSAData的wVersion所支持的最高版本與請(qǐng)求版本中較小的那個(gè)。如果請(qǐng)求的版本低于DLL所支持的最低版本,將返回WSAVERNOTSUPPORTED。成功調(diào)用返回一個(gè)成功調(diào)用返回一個(gè)0 0;在最后都對(duì)應(yīng)一個(gè)WSACleanUp以便釋放為該應(yīng)用程序分配的資源。 WSAStartup( )WSAStartup( )函數(shù)說(shuō)明函數(shù)說(shuō)

8、明1212函數(shù)函數(shù)SOCKET( )SOCKET( )說(shuō)明說(shuō)明SOCKET ( int afaf, int typetype, int protocolprotocol );AfAf:指定地址族,對(duì)于TCP/IP只能是AF_INET;TypeType:Socket類(lèi)型,對(duì)于V1.1 ,只支持SOCK_STREAM及SOCK_DGRAM;ProtocolProtocol:與特定的地址家族相關(guān)的協(xié)議。如果指定為0,系統(tǒng)自動(dòng)選擇合適的協(xié)議(推薦使用)函數(shù)調(diào)用成功,將返回一個(gè)新的SOCKET類(lèi)型的套接字描述符如果調(diào)用失敗,返回INVALID_SOCKET。錯(cuò)誤信息可以通過(guò)WSAGetLastError

9、函數(shù)返回。1313bind( )bind( )函數(shù)說(shuō)明函數(shù)說(shuō)明int bindbind( SOCKET s, const struct sockaddr FAR *name, int namelen );s s:指定要綁定的套接字;namename:指定該套接字的本地地址信息; 它是指向sockaddrsockaddr結(jié)構(gòu)的指針變量,該地址結(jié)構(gòu)是為所有的地址家族準(zhǔn)備的,與所使用的網(wǎng)絡(luò)協(xié)議有關(guān);namelennamelen:指定該地址結(jié)構(gòu)的長(zhǎng)度。1414bind( )bind( )函數(shù)說(shuō)明函數(shù)說(shuō)明struct u_short sa_family; char sa_data14; ; sa_fam

10、ily:指定該地址族,在這里必須設(shè)為AF_INET;sa_data:僅僅表示要求一塊內(nèi)存分配區(qū),該區(qū)域中指定與協(xié)議相關(guān)的具體地址信息。對(duì)于不同的協(xié)議家族,用不同的結(jié)構(gòu)來(lái)替換sockaddr。除了sa_family外,sockaddr是按網(wǎng)絡(luò)字節(jié)順序表示的。在TCP/IP中,用sockaddr_in結(jié)構(gòu)替換sockaddr,以方便我們填寫(xiě)地址信息。 1515struct short ; unsigned short ; struct in_addr ; char sin_zero8; ;:表示地址族,對(duì)于IP地址是AF_INET;:將要分配給套接字的端口;:主機(jī)IP地址;:只是一個(gè)填充數(shù),以使s

11、ockaddr_in結(jié)構(gòu)和sockaddr結(jié)構(gòu)的長(zhǎng)度一樣。1616如果函數(shù)調(diào)用成功,返回0;若失敗返回SOCKET_ERROR。錯(cuò)誤信息可以通過(guò)WSAGetLastError函數(shù)返回。 1 1、一般將IP地址指定為INADDR_ANYINADDR_ANY,允許套接字向任何分配給本地機(jī)器的IP地址發(fā)送或接收數(shù)據(jù)。 2 2、可用inet_addr( 6 ) 指定實(shí)際IP地址;inet_addr( )inet_addr( ) 返回一個(gè)適合分配給S_addr的u_long類(lèi)型的數(shù)值inet_ntoa( )inet_ntoa( ) 完成相反的轉(zhuǎn)換,接受一個(gè)in_addr結(jié)構(gòu)體類(lèi)型的

12、參數(shù)并返回一個(gè)以點(diǎn)分十進(jìn)制格式表示的IP地址字符串。bind( )bind( )函數(shù)說(shuō)明函數(shù)說(shuō)明1717面向連接的服務(wù)器進(jìn)程通過(guò)listen( )和accept( )兩個(gè)函數(shù)來(lái)接收并處理客戶進(jìn)程的連接請(qǐng)求。1isten( )是將指定的套接字設(shè)為監(jiān)聽(tīng)狀態(tài)。int listen(SOCKET sockidlisten(SOCKET sockid,int backlog);int backlog);sockidsockid:套接字描述符(即前面創(chuàng)建的套接字);backlogbacklog:等待隊(duì)列的最大長(zhǎng)度(注:并非在一個(gè)端口可同時(shí)連接的數(shù)目!)1818accept() 用于服務(wù)器進(jìn)程接收客戶進(jìn)程發(fā)

13、送的連接請(qǐng)求newsock=accept(newsock=accept(sockidsockid,clientaddrclientaddr,addrlenaddrlen) );sockidsockid:套接字描述符(前面已經(jīng)設(shè)為監(jiān)聽(tīng));clientaddrclientaddr:客戶的地址信息(同bind函數(shù));addrlenaddrlen:客戶的地址信息的長(zhǎng)度。該函數(shù)調(diào)用成功后會(huì)返回一個(gè)新的套接字。1919clientaddrclientaddr:表示指向客戶套接字地址結(jié)構(gòu)的指針。clientaddr指向一個(gè)初始值為空的地址結(jié)構(gòu),當(dāng)accept()調(diào)用返回后,客戶進(jìn)程的套接字地址被填入該地址結(jié)

14、構(gòu)中。addrlenaddrlen的初始值為0,當(dāng)accept()調(diào)用返回后,保存了客戶進(jìn)程套接字地址的長(zhǎng)度。當(dāng)accept()調(diào)用成功返回后,服務(wù)器進(jìn)程將在sockid指定的套接字上等待接收客戶進(jìn)程的連接請(qǐng)求,該連接請(qǐng)求是客戶進(jìn)程通過(guò)connect()系統(tǒng)調(diào)用發(fā)出的。2020accept( )調(diào)用成功后,將請(qǐng)求連接的客戶進(jìn)程的套接字地址填入clientaddrclientaddr、地址長(zhǎng)度填入addrlenaddrlen,還將返回一個(gè)新的套接字號(hào)newsocknewsock;newsock用于服務(wù)器處理并發(fā)請(qǐng)求,對(duì)應(yīng)于一個(gè)從服務(wù)器。并利用新的套接字號(hào)與客戶進(jìn)程通信(舉例:10086);而主服

15、務(wù)器進(jìn)程繼續(xù)在原來(lái)的套接字(套接字號(hào)為sockid)上接收其他客戶進(jìn)程的連接請(qǐng)求;當(dāng)newsock的值小于0時(shí),表明accept()調(diào)用出錯(cuò)。2121int send(sockidint send(sockid,buffbuff,bufflenbufflen,flags)flags);可控緩沖發(fā)可控緩沖發(fā)送送:表示本地套接字號(hào);:表示指向發(fā)送緩沖區(qū)的指針;:表示發(fā)送緩沖區(qū)大??;:表示傳輸控制標(biāo)志,一般設(shè)為0。int recv(sockidint recv(sockid,buffbuff,bufflenbufflen,flags);flags);2222int sendto(sockidint

16、sendto(sockid,buffbuff,bufflenbufflen,flagsflags,dstaddrdstaddr,dstaddrlen);dstaddrlen); 緩沖無(wú)連接發(fā)送sockid、buff、bufflen、flags參數(shù)意義同前;dstaddr:表示指向信宿套接字地址的指針;dstaddrlen:表示信宿套接字地址長(zhǎng)度。int recvfromint recvfrom(sockidsockid,buffbuff,bufflenbufflen,flagsflags,dstaddrdstaddr,dstaddrlendstaddrlen);緩沖無(wú)連接接收);緩沖無(wú)連接接收

17、23231、getservbyname( ):獲取Internet上各種標(biāo)準(zhǔn)服務(wù)器的端口號(hào);2、gethostbyname( ):獲取服務(wù)器的IP地址;3、gethostname( ):獲取服務(wù)器的主機(jī)名;4、htons( ):把主機(jī)字節(jié)(2B)順序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)順序;5、htonl( ):把主機(jī)字節(jié)(4B)順序轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)順序;6、ntohs( ):把網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換成主機(jī)字節(jié)(2B)順序;h host ost toto n network etwork s shorthorthtonshtons! !2424struct hostent char FAR * h_name; /主機(jī)名 c

18、har FAR * FAR * h_aliases; /主機(jī)別名 short h_addrtype; /地址類(lèi)型 short h_length; /地址長(zhǎng)度 char FAR * FAR * h_addr_list; /地址列表指針;2525SocketSocket編程編程獲取獲取IPIP地址地址#include #include void CheckIP(void) /用于獲取本機(jī)IP地址 WORD wVersionRequested;/存放Winsock版本的值 WSADATA wsaData; char name255;/用于存放主機(jī)名 PHOSTENT hostinfo; wVersi

19、onRequested = MAKEWORD( 2, 2 ); /獲取Winsock的版本,用于加載Winsock庫(kù) if ( WSAStartup( wVersionRequested, &wsaData ) = 0 ) /加載Winsock庫(kù),如果返回值為0說(shuō)明加載成功 if( gethostname (name, sizeof(name) = 0) /判斷是否成功的將本地主機(jī)名存放入由name參數(shù)指定的緩沖區(qū)中2626SocketSocket編程編程獲取獲取IPIP地址地址 if(hostinfo = gethostbyname(name) != NULL) /如果獲得主機(jī)名成功

20、的話,調(diào)用inet_ntoa()函數(shù)取得IP地址 LPCSTR ip = inet_ntoa (*(struct in_addr *)*hostinfo-h_addr_list); printf(本機(jī)的IP地址是:%sn,ip);/輸出IP地址 printf(本機(jī)的名稱(chēng)是:%sn,name); WSACleanup( ); /卸載Winsock庫(kù),并釋放所有資源 int main()CheckIP();/調(diào)用CheckIP()函數(shù)獲得并輸出IP地址return 0;ws2_32.lib示例示例62727基于基于TCPTCP的聊天程序編程的聊天程序編程 服務(wù)器端:服務(wù)器端:1、調(diào)用WSASTAR

21、TUP2、建立SOCKET3、用bind()綁定SOCKET4、使服務(wù)器處于監(jiān)聽(tīng)listen()5、接受客戶端請(qǐng)求accept()6、用新的SOCKET發(fā)送數(shù)據(jù)send()7、用recv()接收數(shù)據(jù)8、不需要時(shí)調(diào)用WSACLEANUP 客戶端:客戶端:1、建立SOCKET2、用connect()發(fā)出請(qǐng)求3、用send()發(fā)送數(shù)據(jù)4、用recv()接收數(shù)據(jù)示例示例7示例示例82828注冊(cè)表在計(jì)算機(jī)中由鍵名和鍵值組成,注冊(cè)表中存儲(chǔ)了Window操作系統(tǒng)的所有配置。值的名稱(chēng)值的名稱(chēng)值無(wú)名稱(chēng)值無(wú)名稱(chēng)2929注冊(cè)表編程注冊(cè)表編程1 1、創(chuàng)建注冊(cè)表鍵、創(chuàng)建注冊(cè)表鍵LONG RegCreateKeyRegC

22、reateKey ( HKEY hKey, / 主鍵名稱(chēng) LPCTSTR lpSubKey, / 子鍵名稱(chēng)或路徑 PHKEY phkResult, / 指向創(chuàng)建表項(xiàng)的句柄 );/ 此句柄是后面操作的依據(jù),比如用RegCloseKey( )關(guān)閉注冊(cè)表項(xiàng)2 2、開(kāi)注冊(cè)表鍵、開(kāi)注冊(cè)表鍵LONG RegOpenKeyRegOpenKey ( HKEY hKey, LPCTSTR lpSubKey, PHKEY phkResult);/ 各參數(shù)同上3030HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY

23、_USERSWindows NT: HKEY_PERFORMANCE_DATA Windows 95 and Windows 98: HKEY_DYN_DATA 3131注冊(cè)表編程注冊(cè)表編程3 3、寫(xiě)入注冊(cè)表、寫(xiě)入注冊(cè)表(條目名稱(chēng)為默認(rèn)或值為字符串時(shí)條目名稱(chēng)為默認(rèn)或值為字符串時(shí))LONG RegSetValueRegSetValue( HKEY , / 已打開(kāi)的鍵的句柄 LPCTSTR, / 若為NULL,則條目名為默認(rèn)值 DWORD , / 變量的類(lèi)型,必須是REG_SZ LPCTSTR , / 變量數(shù)據(jù)的地址,用于存儲(chǔ)內(nèi)容 DWORD / 變量的長(zhǎng)度 ); 返回值:不成功返回非0,成功返回

24、ERROR_SUCCESS 3232注冊(cè)表編程注冊(cè)表編程4 4、從注冊(cè)表讀數(shù)據(jù)(、從注冊(cè)表讀數(shù)據(jù)(條目名稱(chēng)為默認(rèn)或值為字符串時(shí))條目名稱(chēng)為默認(rèn)或值為字符串時(shí))LONG RegQueryValue RegQueryValue ( HKEY , / 已打開(kāi)的鍵的句柄 LPCTSTR, / 一般為NULL LPCTSTR , / 指向存儲(chǔ)變量?jī)?nèi)容數(shù)據(jù)的指針 PLONG / 變量的長(zhǎng)度 ); 返回值:不成功返回非0,成功返回ERROR_SUCCESS 3333舉例1:寫(xiě)注冊(cè)表#include #include void main() HKEY hKey1; RegCreateKey(HKEY_LOCA

25、L_MACHINE, SOFTWAREMicrosoftHacker, &hKey1); /創(chuàng)建注冊(cè)表項(xiàng) RegSetValue(hKey1,NULL,REG_SZ,xiexin,strlen(xiexin); RegCloseKey(hKey1);示例示例93434舉例2:讀注冊(cè)表#include #include void main() LONG lValue; RegQueryValue(HKEY_LOCAL_MACHINE, SOFTWAREMicrosoftHacker, NULL,&lValue); /讀取注冊(cè)表的鍵值,先獲取長(zhǎng)度,放入lValue char *pB

26、uf=new charlValue; RegQueryValue(HKEY_LOCAL_MACHINE, SOFTWAREMicrosoftHacker, pBuf,&lValue); printf(Value is %sn,pBuf);示例示例103535注冊(cè)表編程注冊(cè)表編程5 5、寫(xiě)入注冊(cè)表、寫(xiě)入注冊(cè)表LONG RegSetValueExRegSetValueEx( HKEY , / 已打開(kāi)的鍵的句柄 LPCTSTR, / 要查詢值的名稱(chēng),若為NULL,則查詢?cè)撴I下的默認(rèn)值或未命名值的類(lèi)型與數(shù)據(jù) DWORD , / 保留,必須為0 DWORD , / 變量的類(lèi)型,如REG_SZ或

27、REG_DWORD CONST BYTE *, / 變量數(shù)據(jù)的地址,用于存儲(chǔ)內(nèi)容 DWORD / 變量的長(zhǎng)度 ); 返回值:不成功返回非0,成功返回ERROR_SUCCESS 3636注冊(cè)表編程注冊(cè)表編程6 6、從注冊(cè)表讀數(shù)據(jù)、從注冊(cè)表讀數(shù)據(jù)LONG RegQueryValueExRegQueryValueEx( HKEY , / 已打開(kāi)的鍵的句柄 LPCTSTR, / 要查詢值的名稱(chēng),若為NULL,則查詢?cè)撴I下的默認(rèn)值或未命名值的類(lèi)型與數(shù)據(jù) LPDWORD , / 保留,必須為0 LPDWORD , / 變量的類(lèi)型 LPBYTE , / 變量數(shù)據(jù)的地址,用于存儲(chǔ)內(nèi)容 LPDWORD / 變量

28、的長(zhǎng)度 ); 返回值:不成功返回非0,成功返回ERROR_SUCCESS 3737舉例3:寫(xiě)注冊(cè)表#include #include void main() HKEY hKey1; DWORD dwAge=30;RegCreateKey(HKEY_LOCAL_MACHINE, SOFTWAREMicrosoftHacker, &hKey1); /創(chuàng)建注冊(cè)表項(xiàng) RegSetValueEx(hKey1,Age,0,REG_DWORD, (CONST BYTE *) &dwAge,sizeof(dwAge); RegCloseKey(hKey1);如果讀寫(xiě)的數(shù)據(jù)不是字符串型的(如整形

29、),或者該值本身有名稱(chēng),則要用帶Ex的擴(kuò)展函數(shù)示例示例113838舉例4:讀注冊(cè)表#include #include void main() HKEY hKey1; RegOpenKey(HKEY_LOCAL_MACHINE, SOFTWAREMicrosoftHacker, &hKey1); /打開(kāi)注冊(cè)表項(xiàng) DWORD dwType,dwValue,dwAge; RegQueryValueEx(hKey1,Age,0,&dwType,(LPBYTE) &dwAge, &dwValue);/讀取后放入dwValue中printf(Age is %dn,dwAge

30、); RegCloseKey(hKey1);示例示例123939判斷是否中了判斷是否中了“冰河冰河” 中了“冰河”的計(jì)算機(jī),其注冊(cè)表中將擴(kuò)展名為txttxt的文件的打開(kāi)方式。正常時(shí)是在HKEY_CLASSES_ROOT主鍵下的“txtfileshellopencommand”中有如下關(guān)聯(lián):4040判斷是否中了“冰河”#include #include int main()HKEY hkey;LPCTSTR lpSubKey=txtfileshellopencommand; LPCTSTR dest=%SystemRoot%system32NOTEPAD.EXE %1;LONG ret0=Reg

31、OpenKeyEx(HKEY_CLASSES_ROOT,lpSubKey, 0,KEY_READ,&hkey);if(ERROR_SUCCESS!=ret0)MessageBox(NULL,Open Failure,Error,MB_OK);return 0;4141判斷是否中了“冰河” LPBYTE lpData=new BYTE80; DWORD lpType=REG_EXPAND_SZ; DWORD lpcbData=80; LONGret1=RegQueryValueEx(hkey,NULL,NULL, &lpType,lpData,&lpcbData); if

32、(ERROR_SUCCESS!=ret1) MessageBox(NULL,read Failure,Error,MB_OK); return 0; if(strcmp(const char*)lpData,dest)=0) MessageBox(NULL,No IceRiver,Safety,MB_OK); else MessageBox(NULL,Maybe IceRiver,Warm,MB_OK); return 1;/main function4242舉例:更改登錄用戶名舉例:更改登錄用戶名 當(dāng)用戶登錄系統(tǒng)以后,注冊(cè)表中就會(huì)自動(dòng)記下用戶名,下次登錄時(shí)再把登錄名顯示出來(lái),當(dāng)非法入侵計(jì)算機(jī)

33、以后,同樣會(huì)留下非法登錄的用戶名,所以需要將用戶名修改會(huì)原來(lái)的值.它在HKEY_LOCAL_MACHINE主鍵下的SOFTWAREMicrosoftWindows NTCurrentVersionWinlogonSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon鍵名:DefaultUserName;類(lèi)型:REG_SZ;鍵值:Administrator4343更改系統(tǒng)登錄用戶 HKEY hKey1; LPCTSTR lpSubKey= SOFTWAREMicrosoftWindows NT CurrentVersionWinlogon ; RegO

34、penKeyEx ( HKEY_LOCAL_MACHINE, lpSubKey,0, KEY_WRITE, &hKey1); RegSetValueEx ( hKey1, DefaultUserName, 0, REG_SZ, (byte*)Hacker_sixage, 20); 4444文件系統(tǒng)編程文件系統(tǒng)編程 #include #include void main()char * szCMD = net user Hacker /add;BOOL bSuccess;PROCESS_INFORMATION piProcInfo;STARTUPINFO Info;Info.cb=siz

35、eof(STARTUPINFO);Info.lpReserved=NULL;Info.lpDesktop=NULL;4545文件系統(tǒng)編程文件系統(tǒng)編程Info.lpTitle=NULL;Info.cbReserved2=0;Info.lpReserved2=NULL;bSuccess=CreateProcess(NULL,szCMD,NULL,NULL,false ,NULL,NULL,NULL,&Info,&piProcInfo);if(!bSuccess)printf(創(chuàng)建進(jìn)程失??!);4646系統(tǒng)時(shí)間#include #include int main()SYSTEMTIME sysTime;GetLocalTime(&sysTime);printf(%d年%d月%d日%d時(shí)%d分%d秒n,sysTime.wYear,sysTi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論