FASM: Copy a file
by admin on Sep.20, 2011, under Programming
Example of how to copy a file in flat assembler. Copying a file can be done via the SHFileOperationA command.
format PE GUI 4.0 entry start include 'win32ax.inc' ;================== code ===================== section '.code' code readable executable ;============================================= proc start mov [lpFileOp.wFunc],FO_COPY ; We want the shell to copy a file mov [lpFileOp.fFlags],FOF_SILENT ; .. silently mov [lpFileOp.pFrom],SzFileFrom ; The file which is going to be copied mov [lpFileOp.pTo],SzFileTo ; The name of the new file invoke SHFileOperationA,lpFileOp ; Execute the operation invoke ExitProcess,NULL ; Exit this program endp ;=================== data ==================== section '.data' data readable writeable ;============================================= FO_COPY = 2 FOF_SILENT = 4 SzFileFrom db 'source.txt',0 SzFileTo db 'target.txt',0 struct SHFILEOPSTRUCT hWnd dd ? wFunc dd ? pFrom dd MAX_PATH pTo dd MAX_PATH fFlags dw ? fAnyOperationsAborted dd ? hNameMappings dd ? lpszProgressTitle dd ? ends lpFileOp SHFILEOPSTRUCT ;============================================= section '.idata' import data readable ;============================================= library kernel32,'KERNEL32.DLL',\ shell32,'SHELL32.DLL' import kernel32,\ ExitProcess,'ExitProcess' import shell32,\ SHFileOperationA,'SHFileOperationA'