справка по теме: msdn.microsoft.com/en-us/library/aa363946(VS.85).aspx Directory Management msdn.microsoft.com/en-us/library/aa364229(VS.85).aspx File Management ёмаё чё пишу-то сам - clac.exe Как поправить? Код (Text): format PE GUI 5.0 entry start include '%fasm%\win32ax.inc' section '.data' data readable writeable lpExistingFileName dd 'C:\~\system32\clac.exe' ; хе-хе, я уж не знаю где тут константы, а где переменные :) всё перепробовал! lpNewFileName dd 'C:\calc.exe' section '.code' code readable executable start: invoke CopyFile,[lpExistingFileName],[lpNewFileName],FALSE ; :-) data import library kernel32,'KERNEL32.DLL' import kernel32,CopyFile,'CopyFileA' end data Лучше с CopyFileEx конечно. Давайте, ктонибудь пройдём все файл операции, гуру откликнтесь! CopyDir CopyFile Delete и рекурсивно нужно! :\ PS: Iczelion конечно хорошо для начала, но там одни окна! А мне и без окон много задач охота решить.
Ну да ещё скажите IFileOperation::CopyItems Method Итак простое не прёт. int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp ); где lpFileOp уводит в дебри msdn.... ;- -- фасм кампилит это > но memory read окно вылетает... format PE GUI 5.0 entry start include '%fasm%\win32ax.inc' section '.code' code readable executable start: invoke CopyFile,'C:\~\system32\clac.exe','C:\calc.exe',FALSE data import library kernel32,'KERNEL32.DLL' import kernel32,CopyFile,'CopyFileA' end data CopyFileW - просто другой код еррора А насчёт рекурсии, хотелось бы чтоб *.* возможно было применять... с кучей папок внутри...
CreateFile для самых маленьких Код (Text): ;format PE GUI 5.0 include '%fasm%\win32ax.inc' section '.code' code readable executable start: invoke CreateFile,echo,GENERIC_WRITE,\ FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0 invoke ExitProcess,0 .end start section '.data' data readable writeable echo db 'C:\HelloWorld.txt',0 offtop: Интересно, что тут какой-то упрощённый формат .end start причём так же нету никакого импорта... я попробовал переделать в entry start и сразу же весь код заглючило
Код (Text): format PE GUI 5.0 include '%fasm%\win32ax.inc' section '.code' code readable executable start: xor eax,eax ; навсякий случай :-) invoke CopyFile,lpExistingFileName,lpNewFileName,1 invoke ExitProcess,0 ; все глюки были из-за этого! .end start section '.data' data readable writeable lpExistingFileName db 'C:\~\system32\calc.exe' lpNewFileName db 'C:\calc.exe' не пашет. Может в XP только CopyFileEx реально работает? Код (Text): section '.data' data readable writeable lpExistingFileName db 'C:\NTDETECT.COM' lpNewFileName db 'C:\NTDETECT.EXE' lpProgressRoutine db 'PROGRESS_CONTINUE' lpData dw ? pbCancel dw ? dwCopyFlags db 'COPY_FILE_ALLOW_DECRYPTED_DESTINATION' section '.code' code readable executable start: invoke CopyFileEx,lpExistingFileName,lpNewFileName,lpProgressRoutine,lpData,pbCancel,dwCopyFlags invoke ExitProcess,0 .end start HELP!
Код (Text): format PE GUI 5.0 include '%fasm%\win32ax.inc' section '.data' data readable writeable hwnd dd ? wFunc db 'FO_COPY' pFrom db 'C:\\~\\Apps\\OllyDbg\\*\0' pTo db 'C:\\tmp' fFlags db 'FOF_SILENT' fAnyOperationsAborted db 'FALSE' hNameMappings dd 'NULL' lpszProgressTitle dd 'NULL' section '.code' code readable executable start: invoke SHFileOperation,\ hwnd,\ ; для коментариеф :) wFunc,\ ; .... pFrom,\ ; ... pTo,\ fFlags,\ fAnyOperationsAborted,\ hNameMappings,\ lpszProgressTitle invoke ExitProcess,0 .end start Много ошибок? Хендл чтоль нужен ещё? Двойные \\ это для си или для всех? Если поля имеют значение опционально, чем их затыкать NULL или 0 ? Иль пофиг? ================ АААА! Получилось! beer CopyFile попёр! Интересдно, он чё-то из system32 именно косячил... Из {pf} сразу тяпнул нормально! И ещё я когда импорт сам определял, то в дебаггере какие-то filename.exej приписывалось! гы! Ну главное аптимизм добавило! : Я вот так теперь стал делать lpNewFileName db 'C:\c.exe',0 нормально так хоть?
Рабочий код программы, как и хотелось продолжу minihowto по фасму Видимо я где-то сам ошибку допустил, всё работает из любых папок! Код (Text): ; копируем файл... include '%fasm%\win32ax.inc' section '.code' code readable executable start: invoke CopyFile,lpExistingFileName,lpNewFileName,FALSE invoke ExitProcess,0 .end start section '.data' data readable writeable lpExistingFileName db 'C:\~\system32\ntkrnlpa.exe',0 lpNewFileName db 'C:\kernel.exe',0 -------- А вот эта функция что-то ничего полезного вроде не содержит, причём ещё и не заводится. Код (Text): include '%fasm%\win32ax.inc' section '.code' code readable executable start: invoke CopyFileEx,lpExistingFileName,lpNewFileName,\ lpProgressRoutine,lpData,pbCancel,dwCopyFlags invoke ExitProcess,0 .end start section '.data' data readable writeable lpExistingFileName db 'C:\~\system32\calc.exe',0 lpNewFileName db 'C:\calc.exe',0 lpProgressRoutine dd 'NULL' lpData dd 'NULL' pbCancel db 'TRUE' dwCopyFlags dw 0x00000008 Пора бы SHFileOperation заняться, чего я сильно боюсь! Хоть бы чуть показали
Я на вас дивлюс мсдн показать? А это вообще шедевр: пиши хэллоу ворлд сначал, а не рекурсию по директориям.
>> пиши хэллоу ворлд сначал, Ну а что его писать! Что мозгов прибавляет? Между хэло ворлд и копированием файлов огромный овраг через который надо перепрыгнуть. Каждый раз по поводу асма впадаю в дипрессию, так как нет гуру рядом, чтоб чуток продвинуться в самом начале... :\ Это я прикалываюсь так - lpData dd 'NULL' msdn хороший, но функции создавались извращенцами. ни одного обыкновеного действия не выполнить, чтоб с ног на голову не стать! одна лишь борьба за секьюрность! а вот чтоб файлик скопировать если ему атрибут RO встретился, то блин надо ещё и атрибут установить, какбудто нельзя было всё в одно действие впихнуть! Ненужных флагов и опций тучами! ;-