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

📄 portscan.asm

📁 用ASM写的端口扫描工具!精悍!
💻 ASM
字号:
.386
MODEL	FLAT, STDCALL
OPTION	CaseMap: None

includelib	import32.lib
includelib	WS2_32.lib
include		windows.inc
include		procname.inc
include		winsock2.inc

extrn	ExitProcess: Proc
extrn   GetModuleHandleA: Proc
extrn   GetCommandLineA: Proc
extrn   LoadIconA: Proc
extrn   LoadCursorA: Proc
extrn   RegisterClassExA: Proc
extrn	CreateDialogParamA: Proc
extrn	ShowWindow: Proc
extrn	UpdateWindow: Proc
extrn	GetMessageA: Proc
extrn	TranslateMessage: Proc
extrn	DispatchMessageA: Proc
extrn	PostQuitMessage: Proc
extrn	DefWindowProcA: Proc
extrn	IsDialogMessage: Proc
extrn	GetDlgItemTextA: Proc
extrn	SetDlgItemTextA: Proc
extrn	GetDlgItem: Proc
extrn	EnableWindow: Proc
extrn	MessageBoxA: Proc
extrn	SendMessageA: Proc
wsprintfA	PROTO C :DWORD, :DWORD, :DWORD
;extrn	GetTickCount: Proc
extrn	SetTimer: Proc
extrn	KillTimer: Proc
extrn	lstrlen: Proc
extrn	lstrcpy: Proc
extrn	lstrcat: Proc
extrn	SendDlgItemMessage: Proc
; -----------------------------
extrn	WSAGetLastError: Proc
extrn	WSAStartup: Proc
extrn	WSACleanup: Proc
extrn	socket: Proc
extrn	connect: Proc
extrn	htons: Proc
extrn	ntohs: Proc
extrn	inet_addr: Proc
extrn	inet_ntoa: Proc
extrn	gethostname: Proc
extrn	gethostbyname: Proc
extrn	gethostbyaddr: Proc
extrn	closesocket: Proc
extrn	WSAAsyncSelect: Proc
extrn	getsockname: Proc
extrn	getpeername: Proc
extrn	getservbyport :Proc


; ----------------------------------
IDC_EDIT_TEXT		= 100
IDC_EDIT_HOST		= 101
IDC_EDIT_PORTB		= 102
IDC_EDIT_PORTE		= 103
IDC_EDIT_DELAY		= 104
IDC_EDIT_PORT		= 105
IDC_EDIT_OPEN		= 106
IDC_CB_GETHN		= 110
IDC_BTN_START		= 201
IDC_BTN_STOP		= 202
IDC_BTN_RESET		= 203
IDC_BTN_CLEAR		= 204
; ----------------------------------

TIMER_ID	= 999
WM_SOCKET	= WM_USER + 777

HOST_SIZE	= 256
TEXT_SIZE	= 500
ET_SIZE		= 10000

; ============================================================================

.DATA
	ClassName	db	"PortScanClass", 0
	AppName		db      "Port Scanner", 0
	DlgName		db	"Dialog1", 0

	templld		db	"%ld", 0

	LN		db	13,10, 0
	TError		db	"Error", 0
	TParEr		db	"Wrong parameter !", 0
	TWSAErr		db	"WSA Error !", 0
	THostErr	db	"Unable to resolve hostname.", 0
	TStart		db	"Scan started...", 13,10, 0
	TSErr		db	": socket error", 0
	TConnect	db	": CONNECTED", 0
	TFinish		db	"Scan finished.", 13,10, 0
	TStop		db	"stopped by user...", 13,10, 0
	TReset		db	"Reset.", 13,10, 0
	TBreak		db	"=================", 13,10, 0
	TRemHost	db	"Remote host: ", 0
	TLocHost	db	"Local host: ", 0
	TUnkHost	db	"-unknown-", 0
	TStat		db	"-------- Statistics --------", 13,10, 0
	TReady		db	"Ready ", 0
	TOf		db	" of ", 0
	TInit		db	" attempts", 13,10, 0
	TSCon		db	"Connected: ", 0
	TSRef		db	"Refused: ", 0
	TSTim		db	"Timed out: ", 0
	TSOth		db	"Other: ", 0
	TOpBr		db	" (", 0
	TClBr		db	")", 0
	TOpBr2		db	" [", 0
	TClBr2		db	"]", 0

	ProtoTCP	db	"TCP", 0



.DATA?
        hInst	        HINSTANCE	?
        CmdLine         DWORD   	?
        W       	WNDCLASSEX      ?
	hwnd		HWND		?
	msg		MSG		?

	WSA		WSAData		?
	S		SOCKET		?
	sa		SOCKADDR_IN	?
	sac		SOCKADDR_IN	?
	Size		DWORD		?
	ToGetHN		DWORD		?

	PortB		DWORD		?
	PortE		DWORD		?
	Delay		DWORD		?
	host		db		HOST_SIZE	dup (?)
	Port		DWORD		?
	Opened		DWORD		?
	SockOp		dd		?
	SockCl		dd		?
	Scanning	dd		?

	SCon		dd		?
	SRef		dd		?
	STim		dd		?
	SOth		dd		?

	text		db		TEXT_SIZE	dup(?)
	EditText	db		ET_SIZE		dup (?)


; ============================================================================

.CODE
START:
        call    GetModuleHandle, NULL
        mov     hInst, eax
	call	RegWin		

	call	CreateDialogParam, hInst, offset DlgName, NULL, NULL, NULL
	mov	hwnd, eax
	call	ShowWindow, hwnd, SW_SHOWNORMAL


@MsgL:	call	GetMessage, offset msg, NULL, 0, 0
	or	eax, eax
	jz	@MsgLE
	call	IsDialogMessage, hwnd, offset msg
	cmp	eax, TRUE
	jz	@MsgL
	call	TranslateMessage, offset msg
	call	DispatchMessage, offset msg
	jmp	@MsgL
@MsgLE:
	call	ExitProcess, NULL

; ============================================================================

RegWin	PROC
	mov     W.cbSize, WNDCLASSEXsize
        mov     W.wStyle, CS_HREDRAW or CS_VREDRAW
        mov     W.lpfnWndProc, offset WndProc
        mov     W.cbClsExtra, 0
        mov     W.cbWndExtra, DLGWINDOWEXTRA
        push    hInst
        pop     W.hInstance
        mov     W.hbrBackground, COLOR_BTNFACE+1
        mov     W.lpszMenuName, NULL
        mov     W.lpszClassName, offset ClassName
        call    LoadIcon, NULL, IDI_APPLICATION
        mov     W.hIcon, eax
        mov     W.hIconSm, eax
        call    LoadCursor, NULL, IDC_ARROW
        mov     W.hCursor, eax
        call    RegisterClassEx, offset W
	ret
RegWin	ENDP


; ============================================================================
; ============================================================================
; ============================================================================


WndProc	PROC USES ebx edi esi ebp, hw: HWINDOW, wmsg: DWORD, wparam: DWORD, lparam: DWORD
	cmp	wmsg, WM_CREATE
	jz	wmcreate
	cmp	wmsg, WM_DESTROY
	jz	wmdestroy
	cmp	wmsg, WM_COMMAND
	jz	wmcommand
	cmp	wmsg, WM_TIMER
	jz	wmtimer
	cmp	wmsg, WM_SOCKET
	jz	wmsocket
	jmp	defwndproc

; ----------------------------------------------------------------------------
wmcreate:
	jmp	wpexit

; ----------------------------------------------------------------------------
wmcommand:
; 丸骓邋 耠钼

⌨️ 快捷键说明

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