include huibian.h
include D:\masm32\include\Comdlg32.inc
includelib D:\masm32\lib\Comdlg32.lib
DLG_MAIN equ 1
IDC_HOUR equ 101
IDC_MINITER equ 102
IDC_PATH equ 103
IDC_OK equ 104
IDC_SCROW equ 105
.data?
hInstance dd ?
wHour dd ?
wHour1 dd ?
wMiniter dd ?
wMiniter1 dd ?
szFileName db MAX_PATH dup (?)
idTimer dd ?
.const
szFilTer db '可执行程序(.exe)',0,'*.exe',0,0
szError db '文件打开失败',0
szMessage db '当前时间 %u:%u',0dh,0ah
db '设置时间 %u:%u',0dh,0ah
db '执行文件路径:%s',0dh,0ah,0
.code
_ProcTimer proc _hWnd,uMsg,_idEvent,_dwTime
local @stSystemTime :SYSTEMTIME
local @hError[256]:byte
pushad
invoke GetLocalTime,addr @stSystemTime
movzx eax,@stSystemTime.wHour
mov wHour,eax
movzx eax,@stSystemTime.wMinute
mov wMiniter,eax
.if !(wHour - wHour1 + wMiniter - wMiniter1) //这个地方逻辑与怎么写
(wHour==wHour1)&&(wMiniter==wMiniter1)报错
invoke WinExec,addr szFileName,SW_SHOWNORMAL
.else
invoke wsprintf,addr @hError,addr szMessage, wHour, wMiniter, wHour1, wMiniter1, addr szFileName
invoke MessageBox,NULL,addr @hError,NULL,MB_OK
.endif
popad
_ProcTimer endp
_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParam
local @stSystemTime :SYSTEMTIME
local @stOpen : OPENFILENAME
mov eax,wMsg
.if eax==WM_CLOSE
.if idTimer
invoke KillTimer,NULL,idTimer
.endif
invoke EndDialog,hWnd,NULL
.elseif eax==WM_INITDIALOG
invoke SetDlgItemInt,hWnd,IDC_HOUR,0,FALSE
invoke SetDlgItemInt,hWnd,IDC_MINITER,0,FALSE
mov idTimer,0
.elseif eax==WM_COMMAND
mov eax,wParam
.if ax==IDC_HOUR
invoke GetDlgItemInt,hWnd,IDC_HOUR,addr wHour1,FALSE
mov wHour1,eax
.elseif ax==IDC_MINITER
invoke GetDlgItemInt,hWnd,IDC_MINITER,addr wMiniter1,FALSE
mov wMiniter1,eax
.elseif ax==IDC_SCROW
invoke RtlZeroMemory,addr @stOpen,sizeof @stOpen
mov @stOpen.lStructSize,sizeof @stOpen
push hWnd
pop @stOpen.hWndOwner
mov @stOpen.lpstrFilter,offset szFilTer
mov @stOpen.lpstrFile,offset szFileName
mov @stOpen.nMaxFile,MAX_PATH
mov @stOpen.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
invoke GetOpenFileName,addr @stOpen
.if eax
invoke SetDlgItemText,hWnd,IDC_PATH,addr szFileName
.endif
.elseif ax==IDC_OK
invoke SetTimer,NULL,NULL,20000,addr _ProcTimer
mov idTimer,eax
invoke GetDlgItem,hWnd,IDC_OK
mov ebx,eax
invoke EnableWindow,ebx,FALSE
.endif
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
invoke ExitProcess,NULL
end start
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法