| Cache |
Aug 23rd, 2006 8:55 AM |
FASM mixed with the Win32 API is pretty easy to pick up. I'd had a go with MASM and not really gotten anywhere, tried FASM and had a working GUI'd Win32 app running within a few hours.
This is what I came up with. It's laughable in just about every respect, but it's a start. I call it 'FDelete' because it's made with FASM and it deletes things:
:
format PE GUI 4.0 entry start include '%fasminc%\win32a.inc' ID_EDIT = 101 ID_DIALOG = 50 MB_INFO = MB_OK+MB_ICONINFORMATION+MB_SETFOREGROUND MAX_PATH = 100h section '.data' data readable writeable _edittext rb MAX_PATH _strbuff rb 1024 _progname db 'FDelete',0 _cnd db 'Could not delete: %s',0 _fsd db '"%s" successfuly deleted',0 section '.code' code readable executable start: invoke GetModuleHandle,0 invoke DialogBoxParam,eax,ID_DIALOG,HWND_DESKTOP,DialogProc,0 invoke ExitProcess,0 proc DialogProc uses ebx esi edi,hwnddlg,msg,wparam,lparam cmp [msg],WM_COMMAND je wmcommand cmp [msg],WM_CLOSE je wmclose xor eax,eax jmp finish wmcommand: cmp [wparam],BN_CLICKED shl 16 + IDOK jne processed invoke GetDlgItemText,[hwnddlg],ID_EDIT,_edittext,MAX_PATH cmp eax,0 jbe processed invoke DeleteFile,_edittext cmp eax,0 jne success jmp failure success: cinvoke wsprintf,_strbuff,_fsd,_edittext jmp show failure: cinvoke wsprintf,_strbuff,_cnd,_edittext show: invoke MessageBox,[hwnddlg],_strbuff,_progname,MB_INFO jmp processed wmclose: invoke EndDialog,[hwnddlg],0 processed: mov eax,1 finish: ret endp section '.idata' import data readable writeable library KERNEL32,'KERNEL32.DLL',\ USER32,'USER32.DLL' import KERNEL32,\ GetModuleHandle,'GetModuleHandleA',\ ExitProcess,'ExitProcess',\ DeleteFile,'DeleteFileA' import USER32,\ DialogBoxParam,'DialogBoxParamA',\ GetDlgItemText,'GetDlgItemTextA',\ MessageBox,'MessageBoxA',\ EndDialog,'EndDialog',\ wsprintf,'wsprintfA' section '.rsrc' resource data readable directory RT_DIALOG,dialogs resource dialogs,ID_DIALOG,LANG_ENGLISH+SUBLANG_DEFAULT,fdeldialog dialog fdeldialog,'FDelete',0,0,190,65,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME+DS_CENTER dialogitem 'STATIC','File Path:',-1,10,10,70,8,WS_VISIBLE dialogitem 'EDIT','',ID_EDIT,10,20,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP dialogitem 'BUTTON','OK',IDOK,130,40,45,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON enddialog
BTW, the odd indentation is caused by the forum.
|