Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .486 ; create 32 bit code
- .model flat, stdcall ; 32 bit memory model
- option casemap :none ; case sensitive
- include \masm32\include\windows.inc ; always first
- include \masm32\macros\macros.asm ; MASM support macros
- include \masm32\include\masm32.inc
- include \masm32\include\gdi32.inc
- include \masm32\include\user32.inc
- include \masm32\include\kernel32.inc
- include \masm32\include\msvcrt.inc
- includelib \masm32\lib\masm32.lib
- includelib \masm32\lib\gdi32.lib
- includelib \masm32\lib\user32.lib
- includelib \masm32\lib\kernel32.lib
- includelib \masm32\lib\msvcrt.lib
- ;proto type function
- getAdressOfXY PROTO ro:DWORD,co:DWORD
- readByte PROTO address:DWORD
- readDWORD PROTO address:DWORD
- printStatus PROTO result:DWORD
- setTextColor PROTO color:DWORD
- .const
- ;Base address
- ptrBase equ 1005340h
- ;Some propertiess
- ptrNumRow equ 010056A8h
- ptrNumCol equ 010056ACh
- ptrNumFlagLeft equ 01005194h
- ptrNumBomb equ 01005330h
- ptrTimer equ 0100579Ch
- ;Array Flag
- isSafe equ 0Fh
- isBomb equ 8Fh
- isOpen equ 40h
- is1bomb equ 41h
- is2bomb equ 42h
- is3bomb equ 43h
- is4bomb equ 44h
- is5bomb equ 45h
- is6bomb equ 46h
- is7bomb equ 47h
- is8bomb equ 48h
- isFlag equ 8Eh
- unKnown equ 8Dh
- isExploded equ 204
- isRevealed equ 8Ah
- .data
- debug BYTE 15
- numRow DWORD ?
- numCol DWORD ?
- numFlagLeft DWORD ?
- numBomb DWORD ?
- timer DWORD ?
- res BYTE ?
- row DWORD ?
- col DWORD ?
- i DWORD ?
- j DWORD ?
- .code
- ;return address of num,col coordinate
- setTextColor proc color:DWORD
- LOCAL hConsole:DWORD
- invoke GetStdHandle,STD_OUTPUT_HANDLE
- mov hConsole,eax
- invoke SetConsoleTextAttribute,hConsole, color;
- ret
- setTextColor endp
- readByte proc address:DWORD
- LOCAL value:BYTE,pid:DWORD,pHandle:DWORD,hwnd:DWORD
- invoke FindWindow,0,chr$("Minesweeper")
- test eax,eax
- je FindWindowsFail
- mov hwnd,eax
- invoke GetWindowThreadProcessId , hwnd, addr pid
- invoke OpenProcess,PROCESS_VM_READ,0,pid
- test eax,eax
- je GetHandleFail
- mov pHandle,eax
- invoke ReadProcessMemory,pHandle,address,addr value,1,0
- mov al,value
- ret
- FindWindowsFail:
- print chr$("Can't find windows",13,10)
- mov eax,-1
- ret
- GetHandleFail:
- print chr$("Can't get Handle",13,10)
- mov eax,-1
- ret
- readByte endp
- readDWORD proc address:DWORD
- LOCAL value:DWORD,pid:DWORD,pHandle:DWORD,hwnd:DWORD
- invoke FindWindow,0,chr$("Minesweeper")
- test eax,eax
- je FindWindowsFail
- mov hwnd,eax
- invoke GetWindowThreadProcessId , hwnd , addr pid
- invoke OpenProcess,PROCESS_VM_READ,0,pid
- test eax,eax
- je GetHandleFail
- mov pHandle,eax
- invoke ReadProcessMemory,pHandle,address,addr value,4,0
- mov eax,value
- ret
- FindWindowsFail:
- print chr$("Can't find windows",13,10)
- mov eax,-1
- ret
- GetHandleFail:
- print chr$("Can't get Handle",13,10)
- mov eax,-1
- ret
- readDWORD endp
- printStatus proc result:DWORD
- CMP result, isSafe
- JE IS_SAFE
- CMP result,isBomb
- JE IS_BOMB
- CMP result,isOpen
- JE IS_OPEN
- CMP result,is1bomb
- JE IS_1BOMB
- CMP result,is2bomb
- JE IS_2BOMB
- CMP result ,is3bomb
- JE IS_3BOMB
- CMP result,is4bomb
- JE IS_4BOMB
- CMP result,is5bomb
- JE IS_5BOMB
- CMP result, is6bomb
- JE IS_6BOMB
- CMP result,is7bomb
- JE IS_7BOMB
- CMP result,is8bomb
- JE IS_8BOMB
- CMP result,isFlag
- JE IS_FLAG
- CMP result,isExploded
- JE IS_EXPLODED
- CMP result,isRevealed
- JE IS_REVEALED
- print chr$("? ")
- ret
- IS_SAFE:
- print chr$(". ")
- ret
- IS_BOMB:
- invoke setTextColor,12
- print chr$("* ")
- invoke setTextColor,15
- ret
- IS_FLAG:
- invoke setTextColor,10
- print chr$("F ")
- invoke setTextColor,15
- ret
- IS_1BOMB:
- print chr$("1 ")
- ret
- IS_2BOMB:
- print chr$("2 ")
- ret
- IS_3BOMB:
- print chr$("3 ")
- ret
- IS_4BOMB:
- print chr$("4 ")
- ret
- IS_5BOMB:
- print chr$("5 ")
- ret
- IS_6BOMB:
- print chr$("6 ")
- ret
- IS_7BOMB:
- print chr$("7 ")
- ret
- IS_8BOMB:
- print chr$("8 ")
- ret
- IS_OPEN:
- print chr$(" ")
- ret
- IS_EXPLODED:
- invoke setTextColor,14
- print chr$("* ")
- invoke setTextColor,15
- ret
- IS_REVEALED:
- invoke setTextColor,12
- print chr$(" ")
- invoke setTextColor,15
- ret
- printStatus endp
- getAdressOfXY proc ro:DWORD,co:DWORD
- mov eax,ro
- shl eax,5
- add eax,co
- add eax,ptrBase
- ret
- getAdressOfXY endp
- start:
- InfLoop:
- invoke readDWORD,ptrNumRow
- mov numRow,eax
- invoke readDWORD,ptrNumCol
- mov numCol,eax
- invoke readDWORD,ptrNumFlagLeft
- mov numFlagLeft,eax
- invoke readDWORD,ptrNumBomb
- mov numBomb,eax
- invoke readDWORD,ptrTimer
- mov timer,eax
- invoke crt_printf,chr$("Row: %d Col: %d Bomb: %d Flag Left: %d Time: %d",13,10), numRow, numCol, numBomb, numFlagLeft, timer ;
- mov i,1
- mov j,1
- FORI:
- print chr$(13,10)
- mov j,1
- FORJ:
- invoke getAdressOfXY,i,j
- invoke readByte,eax
- mov res,al
- invoke printStatus,res
- INC j
- mov eax,j
- CMP eax,numCol
- JBE FORJ
- INC i
- mov eax,i
- CMP eax,numRow
- JBE FORI
- invoke Sleep,1000
- invoke crt_system,chr$("cls",0)
- jmp InfLoop
- invoke crt_system,chr$("pause",0)
- invoke ExitProcess,0
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement