.386 .model flat,stdcall option casemap:none WinMain proto :DWORD,:DWORD,:DWORD,:DWORD include c:\masm32\include\windows.inc include c:\masm32\include\kernel32.inc includelib c:\masm32\lib\kernel32.lib include c:\masm32\include\user32.inc includelib c:\masm32\lib\user32.lib include c:\masm32\include\wsock32.inc includelib c:\masm32\lib\wsock32.lib include c:\masm32\include\shell32.inc includelib c:\masm32\lib\shell32.lib include c:\masm32\include\advapi32.inc includelib c:\masm32\lib\advapi32.lib include c:\masm32\include\masm32.inc includelib c:\masm32\lib\masm32.lib .data ClassName db "SimpleWinClass",0 AppName db "GET-Request by pascha.org",0 ; App name MenuName db "Menu",0 ButtonClassName db "button",0 ButtonText db "Send",0 ; Button text thx db "done",0 EditText db "cls",0 EditClassName db "edit",0 NameText db "Me",0 ; pre-filled FROM: TextText db "hi!",0 ; pre-filled message ;php notify serverip db '217.172.186.18', 0 ; IP address of server phpstr db 'GET /in/i.php?n=%s&m=%s&t=%s HTTP/1.0', 13, 10, 13, 10, 13, 10, 0 ; actual GET-request uin db 'john', 0 ; pre-filled TO: .data? mainsock dd ? wsainfo WSADATA<> mainsin sockaddr_in<> phpsin sockaddr_in<> hInstance HINSTANCE ? CommandLine LPSTR ? hwndButton HWND ? hwndCls HWND ? hwndEdit HWND ? hwndEdit2 HWND ? hwndName HWND ? KName db 20 dup(?) ; buffer for Name TheText db 256 dup(?) ; buffer to store the text retrieved from the edit box ;thread stuff phpthread dd ? ;os version osinfo OSVERSIONINFO<> .const ButtonID equ 1 ; The control ID of the button control ClsID equ 3 ; The control ID of the button control EditID equ 2 ; The control ID of the edit control IDM_HELLO equ 1 IDM_CLEAR equ 2 IDM_GETTEXT equ 3 IDM_EXIT equ 4 .code start: ; main just creates a new thread and exits invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax ; create the window 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 hInst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszMenuName,OFFSET MenuName 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,WS_EX_CLIENTEDGE,ADDR ClassName, \ ADDR AppName, WS_OVERLAPPEDWINDOW,\ 200, 0,\ 300,77,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 ; function to open socket PHPNotify PROC phpnumber:DWORD LOCAL phpsendbuff[256]:BYTE LOCAL phpsock:DWORD php_notify: invoke WSAStartup, 101h, offset wsainfo cmp eax, 0 jne restartphploop invoke socket, PF_INET, SOCK_STREAM, 0 cmp eax, INVALID_SOCKET je restartphploop mov phpsock, eax mov phpsin.sin_family, PF_INET invoke htons, 80 mov phpsin.sin_port, ax invoke inet_addr, offset serverip mov phpsin.sin_addr, eax invoke connect, phpsock, offset phpsin, sizeof phpsin cmp eax, SOCKET_ERROR je restartphploop continue: invoke wsprintf, addr phpsendbuff, offset phpstr,\ offset KName, offset TheText, phpnumber invoke send, phpsock, addr phpsendbuff, eax, 0 cmp eax, SOCKET_ERROR je restartphploop invoke closesocket, phpsock ret restartphploop: invoke closesocket, phpsock invoke Sleep, 512 jmp php_notify PHPNotify ENDP ; button-handlers WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_CREATE invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\ WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT,\ 0,0,75,25,hWnd,8,hInstance,NULL mov hwndEdit,eax invoke SetWindowText,hwndEdit,ADDR uin invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\ WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT,\ 210,0,85,25,hWnd,8,hInstance,NULL mov hwndName,eax invoke SetWindowText,hwndName,ADDR NameText invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\ WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\ ES_AUTOHSCROLL,\ 1,25,286,25,hWnd,8,hInstance,NULL mov hwndEdit2,eax invoke SetWindowText,hwndEdit2,ADDR TextText invoke SetFocus, hwndEdit invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR ButtonText,\ WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\ 110,0,100,25,hWnd,ButtonID,hInstance,NULL mov hwndButton,eax invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR EditText,\ WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\ 78,0,30,25,hWnd,EditID,hInstance,NULL mov hwndCls,eax .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF lParam==0 .IF ax==IDM_CLEAR invoke SetWindowText,hwndEdit2,NULL invoke SetWindowText,hwndCls,ADDR EditText invoke SetWindowText,hwndButton,ADDR ButtonText .ELSEIF ax==IDM_GETTEXT invoke GetWindowText,hwndEdit,ADDR uin,9 invoke GetWindowText,hwndName,ADDR KName,17 invoke GetWindowText,hwndEdit2,ADDR TheText,255 invoke SetWindowText,hwndButton,ADDR thx mov eax, offset PHPNotify invoke CreateThread, NULL, NULL, eax, offset uin, 0, offset phpthread invoke Sleep, 1024 invoke CloseHandle, eax .ELSE invoke DestroyWindow,hWnd .ENDIF .ELSE .IF ax==ButtonID shr eax,16 .IF ax==BN_CLICKED invoke SendMessage,hWnd,WM_COMMAND,IDM_GETTEXT,0 .ENDIF .ELSEIF ax==EditID shr eax,16 .IF ax==BN_CLICKED invoke SendMessage,hWnd,WM_COMMAND,IDM_CLEAR,0 .ENDIF .ENDIF .ENDIF .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start