小弟我是一个菜鸟,刚刚开始学习汇编.最近我用汇编编写了一个小程序.这个程序非常的简单,就是打开本机的1984端口,然后一有连接就发送一个字符串.奇怪的是这个程序编译和链接都没有问题,但就是不能打开端口,而我用C++编写的一个几乎相同的程序却可以正常运行.这让我百思不得其解,实在是不知道究竟是哪里出了问题.源程序如下,还请各位多多指教,在下感激不尽!
;test.asm
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include kernel32.inc
includelib kernel32.lib
include wsock32.inc
includelib wsock32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TCP_PORT equ 1999
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data?
hSocket dd ?
hnewSocket dd ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szhellow db 'hellow',0
.code
_SOCKET proc
local @stmysockaddr:sockaddr_in
local @sttheirsockaddr:sockaddr_in
local @stWsa:WSADATA
invoke RtlZeroMemory,addr @stmysockaddr,sizeof @stmysockaddr
invoke WSAStartup,101h,addr @stWsa
invoke socket,AF_INET,SOCK_STREAM,0
mov hSocket,eax
invoke htons,TCP_PORT
mov @stmysockaddr.sin_port,ax
mov @stmysockaddr.sin_family,AF_INET
mov @stmysockaddr.sin_addr,INADDR_ANY
invoke bind,hSocket,addr @stmysockaddr,sizeof @stmysockaddr
invoke listen,hSocket,3
invoke accept,hSocket,addr @sttheirsockaddr,sizeof @sttheirsockaddr
mov hnewSocket,eax
invoke send,hnewSocket,addr szhellow,20,0
invoke closesocket,hSocket
invoke closesocket,hnewSocket
ret
_SOCKET endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
call _SOCKET
invoke ExitProcess,NULL
end start
[培训]科锐逆向工程师培训第53期2025年7月8日开班!