⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ip.asm

📁 一个汇编写的小程序,可以显示本机的主机名和IP地址
💻 ASM
字号:
.386
.model flat, stdcall
option casemap :none

include /masm32/include/windows.inc
include /masm32/include/user32.inc
include /masm32/include/kernel32.inc
include /masm32/include/wsock32.inc
include /masm32/include/gdi32.inc
includelib /masm32/lib/wsock32.lib
includelib /masm32/lib/user32.lib
includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/gdi32.lib

   WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD

.data 
    dlgname     db "WINSOCK",0 
    szTitle     db "Ip Dialog",0
    wsaError    db "Error initializing winsock!",13,10
    szName      db "Computer Name: %s",0
    szFont      db "MS Sans Serif",0

.data?
    wsa WSADATA <?>
    hStatic     dd ?
    hFont       dd ?
    hInstance   dd ?
    buffer      db 24 dup (?)
    buffer2     db 128 dup (?)
    
.code

start:

        invoke GetModuleHandle, NULL
        mov hInstance, eax
        invoke WSAStartup,101h,addr wsa
            .if eax == NULL
                invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
                invoke ExitProcess,0
            .endif
                invoke MessageBox,NULL,offset wsaError,offset szTitle,MB_OK + MB_ICONSTOP
                    invoke ExitProcess,1
                    
WndProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD

      .if uMsg == WM_INITDIALOG
            invoke LoadIcon,hInstance,101
            invoke SendMessage,hWin,WM_SETICON,TRUE,eax
            invoke GetDlgItem,hWin,2000
                mov hStatic,eax
            invoke gethostname,offset buffer,sizeof buffer
            invoke wsprintf,addr buffer2,addr szName,addr buffer
            invoke SetDlgItemText,hWin,3000,addr buffer2
            invoke gethostbyname,addr buffer
            mov eax,[eax+12]                                        
            mov eax,[eax]
            mov eax,[eax]
               invoke inet_ntoa,eax
 	          invoke SetDlgItemText,hWin,2000,eax
            invoke WSACleanup
        xor eax,eax
            ret	
      .elseif uMsg == WM_CTLCOLORSTATIC
        mov eax,lParam
        .if eax == hStatic
            invoke CreateFont,16,16,0,0,400,0,0,0,OEM_CHARSET,\
                            OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,\
                            DEFAULT_QUALITY,DEFAULT_PITCH or FF_SWISS,\
                            ADDR szFont
                mov hFont,eax
            invoke SelectObject, wParam, hFont
            invoke GetSysColor, COLOR_MENU
            invoke SetBkColor, wParam, eax
            invoke SetTextColor,wParam,Blue
            invoke GetStockObject, HOLLOW_BRUSH
                 ret 
        .endif
      .elseif uMsg == WM_CLOSE
            invoke DeleteObject,hFont
            invoke EndDialog,hWin,0  
            xor eax,eax
            ret
      .endif
    xor eax,eax
    ret
    
WndProc endp
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -