⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _list.asm

📁 用win32asm写的防火墙...基本的功能实现了
💻 ASM
字号:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;	添加一新记录到列表框 ECX 为列号, EDI 指向数据缓冲区
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_AddData			proc
		LOCAL	lvi:LV_ITEM
		LOCAL	buffer[200]:BYTE

		pusha
		assume edi:ptr UserInfo

	;	填入第一列	(来源 IP 地址)
		mov lvi.imask,LVIF_TEXT+LVIF_PARAM
		mov lvi.iItem,ecx				;	填写要插入的行
		mov lvi.iSubItem,0				;	填写要插入的列
		invoke	inet_ntoa,(st_packet ptr [edi]).ip_src		;	转成字符串格式
		mov lvi.pszText,eax			;	填写要插入的文本
		mov lvi.lParam,0				;	填写要插入的行
		invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi
	;	填入第二列	(目的 IP 地址)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,1
		invoke	inet_ntoa,(st_packet ptr [edi]).ip_dest		;	转成字符串格式
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第三列	(协议)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,2
		movzx	eax,(st_packet ptr [edi]).ip_protocol
		.if		eax == IPPROTO_ICMP
			lea	eax,szICMP
		.elseif	eax == IPPROTO_IGMP
			lea	eax,szIGMP
		.elseif	eax == IPPROTO_TCP
			lea	eax,szTCP
		.elseif	eax == IPPROTO_UDP
			lea	eax,szUDP
		.else
			lea	eax,szAny
		.endif
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第四列	(数据包方向)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,3
		movzx	eax,(st_packet ptr [edi]).ip_direction
		.if		eax == 1
			lea	eax,szIn
		.elseif	eax == 2
			lea	eax,szOut
		.else									;	== 0
			lea	eax,szAny
		.endif
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第五列	(来源端口)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,4
		movzx	eax,(st_packet ptr [edi]).src_port
		invoke	ntohs,eax
		invoke wsprintf,addr buffer, addr szDex,eax
		lea eax,buffer
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第六列	(目的端口)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,5
		movzx	eax,(st_packet ptr [edi]).dest_port
		invoke	ntohs,eax
		invoke wsprintf,addr buffer, addr szDex,eax
		lea eax,buffer
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第七列	( TCP 标识)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,6
		movzx	eax,(st_packet ptr [edi]).tcp_sign
		invoke wsprintf,addr buffer, addr szDex,eax
		lea eax,buffer
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi
	;	填入第八列	(如何处理)
		mov lvi.imask,LVIF_TEXT
		mov lvi.iSubItem,7
		movzx	eax,(st_packet ptr [edi]).ip_operation
		.if		eax == 1
			lea	eax,szDrop
		.else
			lea	eax,szPass
		.endif
		mov lvi.pszText,eax
		invoke SendMessage,hList,LVM_SETITEM, 0,addr lvi



		assume edi:nothing

		popa
		ret
_AddData			endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;	从内存读取数据显示到列表框的函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ListRule		proc
;	清除原来的数据
		invoke SendMessage,hList,LVM_DELETEALLITEMS,0,0

		xor	ecx,ecx
		lea	edi,szBuffer
		.while	ecx < sizeof szBuffer/sizeof st_packet
			invoke	_AddData
			add	edi,sizeof st_packet
			inc	ecx
		.endw

		ret
_ListRule		endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;	初使化列表框列标题和颜色
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
InitList	proc
	LOCAL	lvc:LV_COLUMN

;	建立列表框窗口

	invoke	CreateWindowEx,204H,addr ListViewClassName,NULL,\
			5011808Dh , 0,0,512,400,hDlgWnd, NULL, hInstance, NULL
;			10CA0844h, 0,0,520,400,hDlgWnd, NULL, hInstance, NULL
;			LVS_SHOWSELALWAYS or LVS_SORTASCENDING or LVS_REPORT or WS_CHILD or WS_VISIBLE or LVS_SINGLESEL, 0,0,520,400,hDlgWnd, NULL, hInstance, NULL
	mov		hList, eax
;	初使化列表框列标题
	mov		lvc.imask,LVCF_TEXT+LVCF_WIDTH
	mov		lvc.pszText,offset Heading1
	mov		lvc.lx,100
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 0, addr lvc
	or		lvc.imask,LVCF_FMT
	mov		lvc.fmt,LVCFMT_RIGHT
	mov		lvc.pszText,offset Heading2
	mov		lvc.lx,100
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 1 ,addr lvc
	mov		lvc.pszText,offset Heading3
	mov		lvc.lx,37
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 2 ,addr lvc
	mov		lvc.pszText,offset Heading4
	mov		lvc.lx,37
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 3 ,addr lvc
	mov		lvc.pszText,offset Heading5
	mov		lvc.lx,60
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 4 ,addr lvc
	mov		lvc.pszText,offset Heading6
	mov		lvc.lx,60
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 5 ,addr lvc
	mov		lvc.pszText,offset Heading7
	mov		lvc.lx,37
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 6 ,addr lvc
	mov		lvc.pszText,offset Heading8
	mov		lvc.lx,60
	invoke	SendMessage,hList, LVM_INSERTCOLUMN, 7 ,addr lvc

;	初使化列表框颜色
	RGB 0,0,0
	invoke	SendMessage,hList,LVM_SETTEXTCOLOR,0,eax
	RGB 255,255,255
	invoke	SendMessage,hList,LVM_SETBKCOLOR,0,eax
	RGB 240,240,240
	invoke	SendMessage,hList,LVM_SETTEXTBKCOLOR,0,eax
;	显示网格
	invoke	SendMessage,hList,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_GRIDLINES,1 or LVS_EX_FULLROWSELECT
;	整行选择
	invoke	SendMessage,hList,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0
	xor eax,LVS_EX_FULLROWSELECT
	invoke	SendMessage,hList,LVM_SETEXTENDEDLISTVIEWSTYLE,0,eax
	ret
InitList	endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -