首页
社区
课程
招聘
[旧帖] [求助]错误分析,socket 接收邮件 0.00雪花
发表于: 2012-9-2 18:16 930

[旧帖] [求助]错误分析,socket 接收邮件 0.00雪花

2012-9-2 18:16
930
;帮忙解释一段代码,socket 接收邮件,谢谢
;编译器RadASM
                        .386
                        .model flat,stdcall
                        option casemap:none
                       
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
include                ws2_32.inc
includelib        ws2_32.lib

                        .data?
szBuffer                db        256 dup (?)
hSocket                        dd        ?
                        .const               
szPop3                        db        'pop.qq.com',0
szRec_Pass                db        'pass *********',0dh,0ah,0
szRec_User                db        'user ********',0dh,0ah,0
szNoop                        db        'noop',0dh,0ah,0       
                        .code
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                       
_ConnectServe        proc        _lpServe,_dwPort
        LOCAL        @WsaData:WSADATA
        LOCAL        @stSin:sockaddr_in
       
        invoke        WSAStartup,202h,addr @WsaData                        ;初始化WSA库
        .if        eax
                jmp        _Err
        .endif
        ;创建套接字
        invoke        socket,AF_INET,SOCK_STREAM,0
        .if        eax == INVALID_SOCKET
                jmp         _Err
        .endif
        mov        hSocket,eax
        invoke        RtlZeroMemory,addr @stSin,sizeof @stSin
        invoke        gethostbyname,_lpServe                                ;将主机名转化为IP地址,pop3协议接收邮件,
        .if        !eax                                                ;smtp协议发送邮件
                jmp        _Err
        .endif
        mov        eax,[eax + hostent.h_list]
        mov        eax,[eax]
        mov        eax,[eax]
        mov        @stSin.sin_addr,eax       
        mov        @stSin.sin_family,AF_INET
        invoke        htons,_dwPort                                        ;25号端口发送邮件,110端口接收邮件
        mov        @stSin.sin_port,ax
        ;建立连接
        invoke        connect,hSocket,addr @stSin,sizeof @stSin        ;填充sockaddr_in结构后建立连接
        .if        eax == SOCKET_ERROR
                jmp        _Err
        .endif
        invoke        RtlZeroMemory,addr szBuffer,sizeof szBuffer
        invoke        recv,hSocket,addr szBuffer,sizeof szBuffer,0
       
        mov        eax,TRUE
        ret
        _Err:
                mov        eax,FALSE
        ret

_ConnectServe endp
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

                       
start:       
        invoke        _ConnectServe,addr szPop3,110
        .if        !eax
                ret                                                       
        .endif
        ;第一次发送 noop指令,正常                ;为什么第二次发送指令出现错误
        invoke        send,hSocket,addr szNoop,sizeof szNoop,0
        invoke        RtlZeroMemory,addr szBuffer,sizeof szBuffer
        invoke        recv,hSocket,addr szBuffer,sizeof szBuffer,0
        invoke        MessageBox,NULL,addr szBuffer,NULL,MB_OK
       
        ;第二次发送 noop指令,错误:-Err unknow command
        invoke        send,hSocket,addr szNoop,sizeof szNoop,0
        invoke        RtlZeroMemory,addr szBuffer,sizeof szBuffer
        invoke        recv,hSocket,addr szBuffer,sizeof szBuffer,0
        invoke        MessageBox,NULL,addr szBuffer,NULL,MB_OK
       
        ret
        end        start

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//