szBuff db "test",0
.
.
invoke send,hSocket,addr szBuff,4,0
.
利用send来发送文本数据,是这样,但是如果发送一个文件,比如发送一个exe文件,改怎么解决?
我是这样想:把文件映射到内存,然后分配一块内存来保存这个文件,之后发送出去.
代码:
invoke CreateFile,CTXT("c:\test.exe"),GENERIC_READ,\ ;打开文件
FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,\
OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
.if eax != INVALID_HANDLE_VALUE
mov hFile,eax
invoke GetFileSize,eax,NULL ;获取其长度
mov @dwFileSize,eax
.if eax
invoke CreateFileMapping,hFile,\ ;创建一个内存映射
NULL,PAGE_READONLY,0,0,NULL
.if eax
mov @hMapFile,eax
invoke MapViewOfFile,eax,\ ;把文件读进内存中
FILE_MAP_READ,0,0,0
.if eax
mov @lpMemory,eax
invoke LocalAlloc, LPTR, 10000000
mov hMemory1, eax
invoke lstrcpy,hMemory1,@lpMemory
invoke lstrlen,hMemory1
invoke send,hSocket,hMemory1,eax,0
.if eax == SOCKET_ERROR
invoke WSAGetLastError
.if eax == WSAEWOULDBLOCK
invoke EnableWindow,hWinOK,FALSE
.endif
.endif
invoke UnmapViewOfFile,@lpMemory
.endif
invoke CloseHandle,@hMapFile
.endif
invoke CloseHandle,hFile
.endif
.endif
经过我的测试,发送过去保存为exe文件后,仅仅看到 MZ这个文本,其他的数据均没看到.
求大大们解个经。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)