.:HoMe:.     .:CrackMe:.     .:My ProGGie:.     .:BuGs & ExpLoiTs:.     .:TOoLs:.     .:VaRiE:.
File compilato + sorgente qui: Calcolatrice32.zip
 
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

include \masm32\M32LIB\masm32.inc
includelib \masm32\M32LIB\masm32.lib


WinMain         proto :DWORD,:DWORD,:DWORD,:DWORD

.const
IDC_BUTTON_PIU equ 100
IDC_BUTTON_MENO equ 101
IDC_BUTTON_PER equ 102
IDC_BUTTON_DIVISO equ 103
IDM_ESCI equ 1

IDC_EDIT equ 104
IDC_EDIT2 equ 105
IDC_EDIT3 equ 106

IDC_BUTTON_CANCELLA equ 107

.data
ClassName       db "DIALOGCLASS",0
DlgName         db "MyDialog",0
AppName         db "Calcolatrice by NoRpiUs",0
MenuName        db "MyMenu",0

impo db "Impossibile",0
inde db "Indeterminato",0

.data?
hInstance   HINSTANCE   ?
CommandLine LPSTR       ?
.data?
numero1 dd 512 dup(?)
numero2 dd 512 dup(?)
risultato dd 512 dup(?)

.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke GetCommandLine
	mov    CommandLine,eax
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
      LOCAL wc:WNDCLASSEX 
      LOCAL msg:MSG 
      LOCAL hDlg: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,DLGWINDOWEXTRA 
      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 CreateDialogParam,hInstance,ADDR DlgName,NULL,NULL,NULL 
      mov   hDlg,eax 
      invoke ShowWindow, hDlg,SW_SHOWNORMAL
      invoke UpdateWindow, hDlg

      .WHILE TRUE 
            invoke GetMessage, ADDR msg,NULL,0,0 
            .BREAK .IF (!eax) 
            invoke IsDialogMessage, hDlg, ADDR msg 
            .IF eax ==FALSE 
                  invoke TranslateMessage, ADDR msg 
                  invoke DispatchMessage, ADDR msg 
            .ENDIF 
      .ENDW
      mov     eax,msg.wParam
      ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
      .IF uMsg==WM_DESTROY
            invoke MessageBoxA, hWnd, OFFSET tvb,OFFSET tvbt, MB_OK
		invoke PostQuitMessage,NULL
      .ELSEIF uMsg==WM_COMMAND
            mov eax,wParam
            .IF ax == IDM_ESCI
                  invoke SendMessageA, hWnd,WM_CLOSE,NULL,NULL                  
                 
            .ELSEIF ax == IDC_BUTTON_PIU
                  invoke GetDlgItemInt,hWnd,IDC_EDIT,NULL,FALSE
                  mov numero1, eax
                  invoke GetDlgItemInt,hWnd,IDC_EDIT2,NULL,FALSE 
                  add eax, numero1
                  invoke SetDlgItemInt, hWnd, IDC_EDIT3, eax, TRUE
                  
            .ELSEIF ax == IDC_BUTTON_MENO
                  invoke GetDlgItemInt,hWnd,IDC_EDIT,NULL,FALSE
                  mov numero1, eax
                  invoke GetDlgItemInt,hWnd,IDC_EDIT2,NULL,FALSE 
                  mov numero2, eax
                  mov eax, numero1
                  sub eax, numero2
                  invoke SetDlgItemInt, hWnd, IDC_EDIT3, eax, TRUE

            .ELSEIF ax == IDC_BUTTON_PER
                  invoke GetDlgItemInt,hWnd,IDC_EDIT,NULL,FALSE
                  mov numero1, eax
                  invoke GetDlgItemInt,hWnd,IDC_EDIT2,NULL,FALSE 
                  mov numero2, eax
                  mov eax, numero1
                  mov ebx, numero2
                  mul ebx
                  invoke SetDlgItemInt, hWnd, IDC_EDIT3, eax, TRUE

            .ELSEIF ax == IDC_BUTTON_DIVISO
                  invoke GetDlgItemInt,hWnd,IDC_EDIT,NULL,FALSE
                  mov numero1, eax
                  invoke GetDlgItemInt,hWnd,IDC_EDIT2,NULL,FALSE 
                  mov numero2, eax
                  cmp numero2, 0
                  je nnsepo
                  mov eax, numero1
                  mov ebx, numero2
                  div ebx
                  invoke SetDlgItemInt, hWnd, IDC_EDIT3, eax, TRUE
                  jmp fine
                  
       nnsepo:    cmp numero1, 0
                  je nnsepo2
                  
                  invoke SetDlgItemText, hWnd, IDC_EDIT3, offset impo
                  jmp fine
       nnsepo2:   invoke SetDlgItemText, hWnd, IDC_EDIT3, offset inde   
                  fine:                  
            .ELSEIF ax == IDC_BUTTON_CANCELLA
                  invoke SetDlgItemInt, hWnd, IDC_EDIT, NULL, TRUE
                  invoke SetDlgItemInt, hWnd, IDC_EDIT2, NULL, TRUE
                  invoke SetDlgItemInt, hWnd, IDC_EDIT3, NULL, TRUE
 
            .ENDIF
      .ELSE
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam		
		ret
	.ENDIF
	xor eax,eax
	ret
WndProc endp

end start
 
------------------------------ RSRC.RC ---------------------------------------
 
#define DS_3DLOOK 4
#define DS_MODALFRAME 128
#define DS_CENTER 2048
#define WS_OVERLAPPED 0
#define WS_VISIBLE 268435456
#define WS_CAPTION 12582912
#define WS_SYSMENU 524288
#define WS_TABSTOP 65536
#define WS_BORDER 8388608
#define WS_VSCROLL 2097152

#define ES_MULTILINE 4
#define ES_READONLY 2048
#define ES_UPPERCASE 8

#define IDM_ESCI 1 
#define IDC_BUTTON_PIU 100
#define IDC_BUTTON_MENO 101
#define IDC_BUTTON_PER 102
#define IDC_BUTTON_DIVISO 103
#define IDC_EDIT 104
#define IDC_EDIT2 105
#define IDC_EDIT3 106
#define IDC_BUTTON_CANCELLA 107

IDI_APPICON             ICON    DISCARDABLE     "Icon.ico"
MyDialog DIALOG 10, 10, 250, 130 
STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | 
WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK 
CAPTION "Calcolatrice by NoRpiUs" 
CLASS "DIALOGCLASS" 
BEGIN 
    DEFPUSHBUTTON "+", IDC_BUTTON_PIU,    200,10,30,30 
    DEFPUSHBUTTON "-", IDC_BUTTON_MENO,   160,10,30,30
    DEFPUSHBUTTON "*", IDC_BUTTON_PER,    200,50,30,30
    DEFPUSHBUTTON "/", IDC_BUTTON_DIVISO, 160,50,30,30    
    DEFPUSHBUTTON "Cancella tutto", IDC_BUTTON_CANCELLA, 160,85,70,26  

    EDITTEXT           IDC_EDIT, 80,20,50,13, WS_TABSTOP
    EDITTEXT           IDC_EDIT2, 80,40,50,13, WS_TABSTOP
    EDITTEXT           IDC_EDIT3, 80,80,50,13, WS_TABSTOP

    LTEXT       "Numero uno", -1, 17,23,50,15
    LTEXT       "Numero due", -1, 17,43,50,15
    LTEXT       "Risultato", -1, 17,83,50,15

END

MyMenu MENU
{
 POPUP "&File"
        {
         MENUITEM "&Esci",IDM_ESCI
        }

}
		
Sito ottimizzato per:
Browser: I.E.
Risoluzione: 1024 x 768
.:ReVeRsiNg:.     .:CoNTaCt Me:.     .:LiNks:.     .:ThaNksTo:.     .:FuCkTo:.