亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ping.asm

?? Windows環境下32位匯編語言程序設計配套書源碼第16章
?? ASM
字號:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Sample code for < Win32ASM Programming >
; by 羅云彬, http://asm.yeah.net
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Ping.asm
; 類似于 Windows 自帶的 Ping.exe 程序,用 ICMP 協議實現 Ping 的功能
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令進行編譯和鏈接:
; ml /c /coff Ping.asm
; Link /SUBSYSTEM:CONSOLE Ping.obj
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.386
		.model flat, stdcall
		option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		kernel32.inc
includelib	kernel32.lib
include		user32.inc
includelib	user32.lib
include		wsock32.inc
includelib	wsock32.lib
PACKET_SIZE	equ	32		;缺省包尺寸為 32 字節
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 數據段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data?
szHostName	db	100 dup (?)
szBuffer	db	1024 dup (?)
szBigBuffer	db	65536 dup (?)	;接收 ICMP_REPLY 的大緩沖區
stWsa		WSADATA	<>
;********************************************************************
; 標志及命令行參數
;********************************************************************
dwOption	dd	?
F_ABORT		equ	0001h		;按了 Ctrl-C 終止

		.data
szHelp		db	'Usage: ping hostname',0dh,0ah,0ah
		db	'example:',0dh,0ah
		db	'  ping 127.0.0.1',0dh,0ah
		db	'  ping www.desthost.com',0dh,0ah,0
szErrHost	db	'Unknown host [%s]',0dh,0ah,0
szErrSocket	db	'Socket error.',0dh,0ah,0
szErrTimeout	db	'Request timed out.',0dh,0ah,0
szErrUnreach	db	'Destination host unreachable.',0dh,0ah,0
szHostOneIP	db	'The IP address of [%s] is %s',0dh,0ah,0
szPingOneIP	db	'Ping %s with 32 bytes of data:',0dh,0ah,0ah,0
szHostMoreIP	db	'The host [%s] has %d IP addresses:',0dh,0ah,0
szPingMoreIP	db	0dh,0ah,'Ping first IP %s with 32 bytes of data:',0dh,0ah,0ah,0
szSpar		db	' / ',0
szReply		db	'Reply from %s: bytes=%d time=%dms TTL=%d',0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代碼段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.code
include		_CmdLine.asm
include		_Console.asm
include		_CheckSum.asm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_HostnameToIP	proc	_lpszHostName
		local	@szBuffer[256]:byte
		local	@dwIP

		invoke	inet_addr,_lpszHostName
		.if	eax !=	INADDR_NONE
;********************************************************************
; 輸入的是IP地址
;********************************************************************
			mov	@dwIP,eax
			invoke	inet_ntoa,eax
			invoke	wsprintf,addr szBuffer,addr szPingOneIP,eax
		.else
;********************************************************************
; 輸入的是主機名稱
;********************************************************************
			invoke	gethostbyname,_lpszHostName
			.if	eax
				xor	edi,edi		;用edi做計數器
				mov	eax,[eax+hostent.h_list]
				.while	dword ptr [eax]
					mov	ebx,[eax]
					push	[ebx]
					inc	edi
					add	eax,4
				.endw
				pop	eax
				mov	@dwIP,eax
				invoke	inet_ntoa,eax
				mov	ebx,eax
				.if	edi ==	1	;主機對應一個IP地址
					invoke	wsprintf,addr szBuffer,addr szHostOneIP,_lpszHostName,ebx
					invoke	wsprintf,addr @szBuffer,addr szPingOneIP,ebx
				.else			;主機對應多個IP地址
					invoke	wsprintf,addr szBuffer,addr szHostMoreIP,_lpszHostName,edi
					invoke	lstrcat,addr szBuffer,ebx
					invoke	wsprintf,addr @szBuffer,addr szPingMoreIP,ebx
					.while	edi > 1
						invoke	lstrcat,addr szBuffer,addr szSpar
						pop	eax
						invoke	inet_ntoa,eax
						invoke	lstrcat,addr szBuffer,eax
						dec	edi
					.endw
				.endif
				invoke	lstrcat,addr szBuffer,addr @szBuffer
			.else
				invoke	wsprintf,addr szBuffer,addr szErrHost,addr szHostName
				invoke	_ConsolePrint,addr szBuffer
				xor	eax,eax
				ret
			.endif
		.endif
		invoke	_ConsolePrint,addr szBuffer
		mov	eax,@dwIP
		ret

_HostnameToIP	endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Ping 主程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_Ping		proc	_dwIP
		local	@szBuffer[256]:byte
		local	@stDest:sockaddr_in
		local	@stFrom:sockaddr_in
		local	@hSocket,@dwSize
		local	@stFdSet:fd_set
		local	@stTimeval:timeval
		local	@dwID:word,@dwSeq:word

		pushad
		mov	@stDest.sin_port,0
		mov	@stDest.sin_family,AF_INET
		push	_dwIP
		pop	@stDest.sin_addr
;********************************************************************
; 初始化一個 socket 發送 ICMP 的 RAW 數據
;********************************************************************
		invoke	socket,AF_INET,SOCK_RAW,IPPROTO_ICMP
		.if	eax ==	INVALID_SOCKET
			invoke	_ConsolePrint,addr szErrSocket
			jmp	_Ping_Ret
		.endif
		mov	@hSocket,eax
;********************************************************************
; 循環 Ping
;********************************************************************
		xor	ebx,ebx
		mov	@dwID,1
		mov	@dwSeq,1
		.while	TRUE
			.break	.if (dwOption & F_ABORT) || (ebx >= 4)
			inc	ebx
			assume	esi:ptr icmp_hdr
			mov	esi,offset szBigBuffer
			invoke	RtlZeroMemory,esi,sizeof szBigBuffer
;********************************************************************
; 構造 Echo Request 數據包
;********************************************************************
			mov	ax,@dwID
			mov	[esi].icmp_id,ax
			mov	ax,@dwSeq
			mov	[esi].icmp_seq,ax
			mov	[esi].icmp_type,ICMP_ECHOREQ	;構造 ICMP_ECHO_REQ 數據包

			invoke	GetTickCount
			mov	dword ptr [esi].icmp_data,eax	;將當前時間作為數據
			mov	ecx,PACKET_SIZE
			add	ecx,sizeof icmp_hdr-1
			invoke	_CalcCheckSum,addr szBigBuffer,ecx
			mov	[esi].icmp_cksum,ax
;********************************************************************
; 發送 Echo Request 數據包
;********************************************************************
			invoke	sendto,@hSocket,addr szBigBuffer,ecx,\
				 0,addr @stDest,sizeof sockaddr_in
			.if	eax == SOCKET_ERROR
				invoke	_ConsolePrint,addr szErrUnreach
				.continue
			.endif
			assume	esi:nothing
;********************************************************************
; 等待回復
;********************************************************************
			@@:
			mov	@stFdSet.fd_count,1
			push	@hSocket
			pop	@stFdSet.fd_array
			mov	@stTimeval.tv_sec,0
			mov	@stTimeval.tv_usec,1000000	;超時時間1秒

			invoke	select,0,addr @stFdSet,NULL,NULL,addr @stTimeval
			.if	eax == SOCKET_ERROR
				invoke	_ConsolePrint,addr szErrSocket
				.continue
			.endif
			.if	eax
;********************************************************************
; 接收返回數據包
;********************************************************************
				mov	@dwSize,sizeof @stFrom
				invoke	recvfrom,@hSocket,addr szBigBuffer,sizeof szBigBuffer,\
					0,addr @stFrom,addr @dwSize
				.if	eax == SOCKET_ERROR
					invoke	_ConsolePrint,addr szErrSocket
				.else
					mov	eax,@stFrom.sin_addr
					.if	eax !=	@stDest.sin_addr
						jmp	@B
					.endif
					mov	bx,word ptr szBigBuffer+sizeof ip_hdr+icmp_hdr.icmp_id
					mov	cx,word ptr szBigBuffer+sizeof ip_hdr+icmp_hdr.icmp_seq
					.if	bx != @dwID || cx != @dwSeq
						jmp	@B
					.endif
;********************************************************************
; 如果返回的數據包是由目標主機所發的話,則顯示時間和 TTL 數據
;********************************************************************
					invoke	inet_ntoa,eax
					.if	eax !=	NULL
						invoke	lstrcpy,addr @szBuffer,eax
					.endif
					invoke	GetTickCount
					sub	eax,dword ptr szBigBuffer+sizeof ip_hdr+icmp_hdr.icmp_data
					movzx	ecx,szBigBuffer + ip_hdr.ip_ttl
					invoke	wsprintf,addr szBuffer,addr szReply,\
						addr @szBuffer,PACKET_SIZE,eax,ecx
					invoke	_ConsolePrint,addr szBuffer
				.endif
			.else
				invoke	_ConsolePrint,addr szErrTimeout
			.endif
			inc	@dwID
			inc	@dwSeq
			invoke	Sleep,1000
		.endw
		invoke	closesocket,@hSocket
_Ping_Ret:
		popad
		ret

_Ping		endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
		call	_ConsoleInit
		invoke	_argc
		.if	eax ==	2
			invoke	WSAStartup,101h,addr stWsa
			.if	! eax
				invoke	_argv,1,addr szHostName,sizeof szHostName
				invoke	_HostnameToIP,addr szHostName
				.if	eax
					invoke	_Ping,eax
				.endif
			.endif
			invoke	WSACleanup
		.else
			invoke	_ConsolePrint,addr szHelp
		.endif
		invoke	ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		end	start

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美va在线播放| 粉嫩aⅴ一区二区三区四区| 中文在线资源观看网站视频免费不卡| 欧美日韩视频专区在线播放| 国产成人8x视频一区二区| 韩国女主播成人在线观看| 久久精品国产精品青草| 日精品一区二区| 视频一区在线播放| 午夜精品久久久久久久蜜桃app| 亚洲精品视频观看| 一区二区三区在线免费观看| 亚洲三级在线看| 亚洲激情欧美激情| 一区二区三区自拍| 亚洲国产精品久久一线不卡| 亚洲精品视频自拍| 日韩在线a电影| 精品一区二区日韩| 高清成人免费视频| 色综合色狠狠天天综合色| 欧美日韩一区二区三区视频| 在线观看91av| 日韩三级视频在线看| 欧美精品一区视频| 日韩一区中文字幕| 亚洲国产精品久久久男人的天堂| 五月婷婷激情综合| 国产一区二区三区美女| 99国内精品久久| 欧美精品久久99久久在免费线| 日韩视频在线观看一区二区| 26uuu国产电影一区二区| 最近日韩中文字幕| 美女视频黄免费的久久| 国产电影一区二区三区| 99精品黄色片免费大全| 91超碰这里只有精品国产| 国产网站一区二区三区| 亚洲欧美国产77777| 天堂在线亚洲视频| 成人精品小蝌蚪| 777午夜精品视频在线播放| 国产免费成人在线视频| 亚洲va欧美va人人爽| 成人午夜视频在线| 欧美一区二区日韩| 亚洲日本在线天堂| 精品亚洲porn| 欧美日韩精品一二三区| 中文字幕一区二区在线观看| 青娱乐精品在线视频| 91在线精品一区二区| 久久久久久久久久久电影| 亚洲制服丝袜在线| 岛国精品在线观看| 久久婷婷久久一区二区三区| 亚洲成av人综合在线观看| 福利一区福利二区| 日韩精品一区二区三区在线播放 | 国产福利一区二区| 91精品国产综合久久精品性色| 国产精品欧美经典| 国产福利一区在线| 欧美一级理论片| 午夜伦理一区二区| 91麻豆123| 亚洲欧洲国产日本综合| 国内精品在线播放| 日韩视频在线永久播放| 亚洲成av人在线观看| 91色porny| 亚洲欧美另类小说| 成人精品一区二区三区四区 | 欧美一区二区三区思思人| 亚洲高清不卡在线| 91丝袜美腿高跟国产极品老师 | 全国精品久久少妇| 91精品国产免费| 日本vs亚洲vs韩国一区三区 | 老司机午夜精品| 久久综合色之久久综合| 日韩av一区二| 日韩一二在线观看| 久久99精品国产91久久来源| 欧美成人国产一区二区| 国内成人自拍视频| 久久精品视频在线免费观看| 欧美bbbbb| 国产亚洲一区二区在线观看| 国产精品影视在线| 中文在线一区二区 | 一区二区三区中文字幕精品精品 | 免费观看日韩电影| 欧美成人艳星乳罩| 国产成人精品免费在线| 国产精品久久久久久亚洲毛片 | 日韩一区二区不卡| 国模套图日韩精品一区二区| 久久久久久电影| 91影视在线播放| 亚洲成av人片一区二区三区| 欧美大片日本大片免费观看| 美腿丝袜在线亚洲一区| 国产欧美视频一区二区三区| 成人网在线播放| 五月天国产精品| 精品日韩在线一区| 99视频超级精品| 久久精品噜噜噜成人av农村| 久久婷婷成人综合色| 色素色在线综合| 久久精品国产成人一区二区三区| 日本一二三不卡| 91精品在线免费| 成人av资源站| 蜜桃视频一区二区三区| 国产精品久久精品日日| 欧美疯狂做受xxxx富婆| av中文字幕亚洲| 免费在线观看不卡| 亚洲人成7777| 精品免费视频一区二区| 欧美性一二三区| 福利电影一区二区| 日韩在线一区二区三区| 成人欧美一区二区三区在线播放| 91精选在线观看| 欧美在线视频不卡| 成人深夜在线观看| 免费观看在线综合| 亚洲激情图片一区| 中文字幕在线不卡| 久久久.com| 欧美精品一区二区三区高清aⅴ | 日韩av一区二区三区| 亚洲福利视频一区二区| 综合激情成人伊人| 亚洲国产成人在线| 久久精品一区八戒影视| 日韩欧美一级二级三级久久久| 色视频成人在线观看免| 91小视频在线免费看| av网站免费线看精品| 国产福利一区在线| 国产精品88av| 国产九色sp调教91| 国产乱子伦视频一区二区三区| 毛片av中文字幕一区二区| 天堂蜜桃91精品| 日本强好片久久久久久aaa| 五月天婷婷综合| 亚洲二区在线视频| 亚洲综合偷拍欧美一区色| 亚洲欧洲一区二区三区| 中文字幕免费观看一区| 久久综合狠狠综合| 久久免费看少妇高潮| 精品久久久久99| 欧美一区二区三区免费大片| 91精品国产综合久久久蜜臀粉嫩| 欧美亚洲图片小说| 欧美午夜精品一区二区三区| 欧美亚洲日本一区| 欧美日韩另类一区| 欧美一区二区三区在线视频| 欧美一区二区三区在线看| 日韩三级.com| 2024国产精品视频| 欧美激情一区二区三区全黄| 国产欧美精品日韩区二区麻豆天美| 久久久久久久久久美女| 中文字幕一区二区三| 亚洲女爱视频在线| 天天色天天爱天天射综合| 青青草原综合久久大伊人精品| 蜜桃精品视频在线| 国产91精品一区二区麻豆亚洲| 东方aⅴ免费观看久久av| 972aa.com艺术欧美| 欧美日韩高清不卡| 欧美成人a视频| 国产精品视频麻豆| 亚洲va欧美va人人爽| 久久疯狂做爰流白浆xx| 99国产精品99久久久久久| 欧美性猛交xxxx乱大交退制版| 欧美一级久久久久久久大片| 久久蜜桃av一区精品变态类天堂| 国产精品欧美久久久久一区二区| 一个色妞综合视频在线观看| 日韩av网站免费在线| 成人手机在线视频| 日韩你懂的电影在线观看| 最新热久久免费视频| 久久国产尿小便嘘嘘| 在线观看国产日韩| 久久久久国产精品麻豆ai换脸 | 欧美日韩在线播放一区| 久久综合九色综合久久久精品综合|