Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
163
Task/Sockets/X86-Assembly/sockets-1.x86
Normal file
163
Task/Sockets/X86-Assembly/sockets-1.x86
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
;using sockets on linux with the 0x80 inturrprets.
|
||||
;
|
||||
;assemble
|
||||
; nasm -o socket.o -f elf32 -g socket.asm
|
||||
;link
|
||||
; ld -o socket socket.o
|
||||
;
|
||||
;
|
||||
;Just some assigns for better readability
|
||||
|
||||
%assign SOCK_STREAM 1
|
||||
%assign AF_INET 2
|
||||
%assign SYS_socketcall 102
|
||||
%assign SYS_SOCKET 1
|
||||
%assign SYS_CONNECT 3
|
||||
%assign SYS_SEND 9
|
||||
%assign SYS_RECV 10
|
||||
|
||||
section .text
|
||||
global _start
|
||||
|
||||
;--------------------------------------------------
|
||||
;Functions to make things easier. :]
|
||||
;--------------------------------------------------
|
||||
_socket:
|
||||
mov [cArray+0], dword AF_INET
|
||||
mov [cArray+4], dword SOCK_STREAM
|
||||
mov [cArray+8], dword 0
|
||||
mov eax, SYS_socketcall
|
||||
mov ebx, SYS_SOCKET
|
||||
mov ecx, cArray
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
_connect:
|
||||
call _socket
|
||||
mov dword [sock], eax
|
||||
mov dx, si
|
||||
mov byte [edi+3], dl
|
||||
mov byte [edi+2], dh
|
||||
mov [cArray+0], eax ;sock;
|
||||
mov [cArray+4], edi ;&sockaddr_in;
|
||||
mov edx, 16
|
||||
mov [cArray+8], edx ;sizeof(sockaddr_in);
|
||||
mov eax, SYS_socketcall
|
||||
mov ebx, SYS_CONNECT
|
||||
mov ecx, cArray
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
_send:
|
||||
mov edx, [sock]
|
||||
mov [sArray+0],edx
|
||||
mov [sArray+4],eax
|
||||
mov [sArray+8],ecx
|
||||
mov [sArray+12], dword 0
|
||||
mov eax, SYS_socketcall
|
||||
mov ebx, SYS_SEND
|
||||
mov ecx, sArray
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
_exit:
|
||||
push 0x1
|
||||
mov eax, 1
|
||||
push eax
|
||||
int 0x80
|
||||
|
||||
_print:
|
||||
mov ebx, 1
|
||||
mov eax, 4
|
||||
int 0x80
|
||||
ret
|
||||
;--------------------------------------------------
|
||||
;Main code body
|
||||
;--------------------------------------------------
|
||||
|
||||
_start:
|
||||
mov esi, szIp
|
||||
mov edi, sockaddr_in
|
||||
xor eax,eax
|
||||
xor ecx,ecx
|
||||
xor edx,edx
|
||||
.cc:
|
||||
xor ebx,ebx
|
||||
.c:
|
||||
lodsb
|
||||
inc edx
|
||||
sub al,'0'
|
||||
jb .next
|
||||
imul ebx,byte 10
|
||||
add ebx,eax
|
||||
jmp short .c
|
||||
.next:
|
||||
mov [edi+ecx+4],bl
|
||||
inc ecx
|
||||
cmp ecx,byte 4
|
||||
jne .cc
|
||||
|
||||
mov word [edi], AF_INET
|
||||
mov esi, szPort
|
||||
xor eax,eax
|
||||
xor ebx,ebx
|
||||
.nextstr1:
|
||||
lodsb
|
||||
test al,al
|
||||
jz .ret1
|
||||
sub al,'0'
|
||||
imul ebx,10
|
||||
add ebx,eax
|
||||
jmp .nextstr1
|
||||
.ret1:
|
||||
xchg ebx,eax
|
||||
mov [sport], eax
|
||||
|
||||
mov si, [sport]
|
||||
call _connect
|
||||
cmp eax, 0
|
||||
jnz short _fail
|
||||
mov eax, msg
|
||||
mov ecx, msglen
|
||||
call _send
|
||||
call _exit
|
||||
|
||||
_fail:
|
||||
mov edx, cerrlen
|
||||
mov ecx, cerrmsg
|
||||
call _print
|
||||
call _exit
|
||||
|
||||
|
||||
_recverr:
|
||||
call _exit
|
||||
_dced:
|
||||
call _exit
|
||||
|
||||
section .data
|
||||
cerrmsg db 'failed to connect :(',0xa
|
||||
cerrlen equ $-cerrmsg
|
||||
msg db 'Hello socket world!',0xa
|
||||
msglen equ $-msg
|
||||
|
||||
szIp db '127.0.0.1',0
|
||||
szPort db '256',0
|
||||
|
||||
section .bss
|
||||
sock resd 1
|
||||
;general 'array' for syscall_socketcall argument arg.
|
||||
cArray resd 1
|
||||
resd 1
|
||||
resd 1
|
||||
resd 1
|
||||
|
||||
;send 'array'.
|
||||
sArray resd 1
|
||||
resd 1
|
||||
resd 1
|
||||
resd 1
|
||||
;duh?
|
||||
sockaddr_in resb 16
|
||||
;..
|
||||
sport resb 2
|
||||
buff resb 1024
|
||||
145
Task/Sockets/X86-Assembly/sockets-2.x86
Normal file
145
Task/Sockets/X86-Assembly/sockets-2.x86
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
.586
|
||||
.model flat,stdcall
|
||||
option casemap:none
|
||||
|
||||
include /masm32/include/windows.inc
|
||||
include /masm32/include/user32.inc
|
||||
include /masm32/include/kernel32.inc
|
||||
include /masm32/include/ws2_32.inc
|
||||
|
||||
includelib /masm32/lib/user32.lib
|
||||
includelib /masm32/lib/kernel32.lib
|
||||
includelib /masm32/lib/ws2_32.lib
|
||||
|
||||
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
|
||||
|
||||
|
||||
.data
|
||||
ClassName db "MainWinClass",0
|
||||
AppName db "Async Sockets",0
|
||||
szSockStr db "Hello socket world!",13,10,0
|
||||
szIp db "127.0.0.1",0
|
||||
port dd 256
|
||||
|
||||
wsa WSADATA <>
|
||||
sa sockaddr_in <>
|
||||
|
||||
.data?
|
||||
hInstance dd ?
|
||||
CommandLine dd ?
|
||||
sock dd ?
|
||||
|
||||
.const
|
||||
WM_SOCK equ WM_USER+100
|
||||
|
||||
.code
|
||||
start:
|
||||
invoke WSAStartup, 200h, addr wsa
|
||||
.if eax!=NULL
|
||||
invoke ExitProcess, eax
|
||||
.else
|
||||
invoke GetModuleHandle, NULL
|
||||
mov hInstance,eax
|
||||
invoke GetCommandLine
|
||||
mov CommandLine,eax
|
||||
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
|
||||
invoke ExitProcess,eax
|
||||
.endif
|
||||
|
||||
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
|
||||
LOCAL wc:WNDCLASSEX
|
||||
LOCAL msg:MSG
|
||||
LOCAL hwnd:HWND
|
||||
|
||||
mov wc.cbSize,SIZEOF WNDCLASSEX
|
||||
mov wc.style, CS_HREDRAW or CS_VREDRAW
|
||||
mov wc.lpfnWndProc, OFFSET WndProc
|
||||
mov wc.cbClsExtra,NULL
|
||||
mov wc.cbWndExtra,NULL
|
||||
push hInstance
|
||||
pop wc.hInstance
|
||||
mov wc.hbrBackground,COLOR_BTNFACE+1
|
||||
mov wc.lpszMenuName,NULL
|
||||
mov wc.lpszClassName,OFFSET ClassName
|
||||
|
||||
invoke LoadIcon,NULL,IDI_APPLICATION
|
||||
mov wc.hIcon,eax
|
||||
mov wc.hIconSm,eax
|
||||
|
||||
invoke LoadCursor,NULL,IDC_ARROW
|
||||
mov wc.hCursor,eax
|
||||
|
||||
invoke RegisterClassEx, addr wc
|
||||
INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
|
||||
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
|
||||
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
|
||||
hInst,NULL
|
||||
mov hwnd,eax
|
||||
|
||||
invoke ShowWindow, hwnd,SW_SHOWNORMAL
|
||||
invoke UpdateWindow, hwnd
|
||||
|
||||
.WHILE TRUE
|
||||
invoke GetMessage, ADDR msg,NULL,0,0
|
||||
.BREAK .IF (!eax)
|
||||
invoke TranslateMessage, ADDR msg
|
||||
invoke DispatchMessage, ADDR msg
|
||||
.ENDW
|
||||
|
||||
mov eax,msg.wParam
|
||||
ret
|
||||
WinMain endp
|
||||
|
||||
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||
|
||||
.IF uMsg==WM_DESTROY
|
||||
invoke PostQuitMessage,NULL
|
||||
.ELSEIF uMsg==WM_CREATE
|
||||
invoke socket, AF_INET,SOCK_STREAM, 0
|
||||
.if eax==INVALID_SOCKET
|
||||
;error
|
||||
.endif
|
||||
mov sock, eax
|
||||
invoke WSAAsyncSelect, sock, hWnd, WM_SOCK, FD_CONNECT or FD_CLOSE
|
||||
.if eax==INVALID_SOCKET
|
||||
;error!
|
||||
.endif
|
||||
mov sa.sin_family, AF_INET
|
||||
invoke inet_addr, addr szIp
|
||||
mov sa.sin_addr, eax
|
||||
invoke htons, port
|
||||
mov sa.sin_port, ax
|
||||
invoke connect, sock, addr sa, sizeof sa
|
||||
.if eax==SOCKET_ERROR
|
||||
invoke WSAGetLastError
|
||||
.if eax!=WSAEWOULDBLOCK
|
||||
;real error.
|
||||
.endif
|
||||
.endif
|
||||
.elseif uMsg==WM_SOCK
|
||||
mov edx, lParam
|
||||
.if dx==FD_CONNECT
|
||||
shr edx, 16
|
||||
.if dx==NULL
|
||||
invoke lstrlen, addr szSockStr
|
||||
invoke send, sock, addr szSockStr, eax, 0
|
||||
.else
|
||||
;error
|
||||
.endif
|
||||
.elseif dx==FD_CLOSE
|
||||
shr edx, 16
|
||||
.if dx==NULL
|
||||
invoke SendMessage, hWnd, WM_DESTROY, 0, 0
|
||||
.endif
|
||||
.endif
|
||||
.ELSE
|
||||
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
|
||||
ret
|
||||
.ENDIF
|
||||
|
||||
xor eax,eax
|
||||
ret
|
||||
WndProc endp
|
||||
|
||||
|
||||
end start
|
||||
118
Task/Sockets/X86-Assembly/sockets-3.x86
Normal file
118
Task/Sockets/X86-Assembly/sockets-3.x86
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
.586
|
||||
.model flat,stdcall
|
||||
option casemap:none
|
||||
|
||||
include /masm32/include/windows.inc
|
||||
include /masm32/include/user32.inc
|
||||
include /masm32/include/kernel32.inc
|
||||
include /masm32/include/ws2_32.inc
|
||||
|
||||
includelib /masm32/lib/user32.lib
|
||||
includelib /masm32/lib/kernel32.lib
|
||||
includelib /masm32/lib/ws2_32.lib
|
||||
|
||||
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
|
||||
|
||||
|
||||
.data
|
||||
ClassName db "MainWinClass",0
|
||||
AppName db "Blocking Sockets",0
|
||||
szSockStr db "Hello socket world!",13,10,0
|
||||
szIp db "127.0.0.1",0
|
||||
port dd 256
|
||||
|
||||
wsa WSADATA <>
|
||||
sa sockaddr_in <>
|
||||
|
||||
.data?
|
||||
hInstance dd ?
|
||||
CommandLine dd ?
|
||||
sock dd ?
|
||||
|
||||
.code
|
||||
start:
|
||||
invoke WSAStartup, 200h, addr wsa
|
||||
.if eax!=NULL
|
||||
invoke ExitProcess, eax
|
||||
.else
|
||||
invoke GetModuleHandle, NULL
|
||||
mov hInstance,eax
|
||||
invoke GetCommandLine
|
||||
mov CommandLine,eax
|
||||
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
|
||||
invoke ExitProcess,eax
|
||||
.endif
|
||||
|
||||
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
|
||||
LOCAL wc:WNDCLASSEX
|
||||
LOCAL msg:MSG
|
||||
LOCAL hwnd:HWND
|
||||
|
||||
mov wc.cbSize,SIZEOF WNDCLASSEX
|
||||
mov wc.style, CS_HREDRAW or CS_VREDRAW
|
||||
mov wc.lpfnWndProc, OFFSET WndProc
|
||||
mov wc.cbClsExtra,NULL
|
||||
mov wc.cbWndExtra,NULL
|
||||
push hInstance
|
||||
pop wc.hInstance
|
||||
mov wc.hbrBackground,COLOR_BTNFACE+1
|
||||
mov wc.lpszMenuName,NULL
|
||||
mov wc.lpszClassName,OFFSET ClassName
|
||||
|
||||
invoke LoadIcon,NULL,IDI_APPLICATION
|
||||
mov wc.hIcon,eax
|
||||
mov wc.hIconSm,eax
|
||||
|
||||
invoke LoadCursor,NULL,IDC_ARROW
|
||||
mov wc.hCursor,eax
|
||||
|
||||
invoke RegisterClassEx, addr wc
|
||||
INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
|
||||
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
|
||||
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
|
||||
hInst,NULL
|
||||
mov hwnd,eax
|
||||
|
||||
invoke ShowWindow, hwnd,SW_SHOWNORMAL
|
||||
invoke UpdateWindow, hwnd
|
||||
|
||||
.WHILE TRUE
|
||||
invoke GetMessage, ADDR msg,NULL,0,0
|
||||
.BREAK .IF (!eax)
|
||||
invoke TranslateMessage, ADDR msg
|
||||
invoke DispatchMessage, ADDR msg
|
||||
.ENDW
|
||||
|
||||
mov eax,msg.wParam
|
||||
ret
|
||||
WinMain endp
|
||||
|
||||
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
|
||||
|
||||
.IF uMsg==WM_DESTROY
|
||||
invoke PostQuitMessage,NULL
|
||||
.ELSEIF uMsg==WM_CREATE
|
||||
invoke socket, AF_INET,SOCK_STREAM, 0
|
||||
.if eax==INVALID_SOCKET
|
||||
;error
|
||||
.endif
|
||||
mov sock, eax
|
||||
mov sa.sin_family, AF_INET
|
||||
invoke inet_addr, addr szIp
|
||||
mov sa.sin_addr, eax
|
||||
invoke htons, port
|
||||
mov sa.sin_port, ax
|
||||
invoke connect, sock, addr sa, sizeof sa
|
||||
invoke lstrlen, addr szSockStr
|
||||
invoke send, sock, addr szSockStr, eax, 0
|
||||
.ELSE
|
||||
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
|
||||
ret
|
||||
.ENDIF
|
||||
|
||||
xor eax,eax
|
||||
ret
|
||||
WndProc endp
|
||||
|
||||
|
||||
end start
|
||||
Loading…
Add table
Add a link
Reference in a new issue