File Management Functions + Directory Management Functions

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 10 мар 2009.

  1. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    справка по теме:
    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):
    1. format PE GUI 5.0
    2. entry start
    3. include '%fasm%\win32ax.inc'
    4.  
    5. section '.data' data readable writeable
    6. lpExistingFileName dd 'C:\~\system32\clac.exe'
    7. ; хе-хе, я уж не знаю где тут константы, а где переменные :) всё перепробовал!
    8. lpNewFileName dd 'C:\calc.exe'
    9.  
    10. section '.code' code readable executable
    11. start:
    12. invoke CopyFile,[lpExistingFileName],[lpNewFileName],FALSE ; :-)
    13.  
    14. data import
    15.  library kernel32,'KERNEL32.DLL'
    16.  import kernel32,CopyFile,'CopyFileA'
    17. end data
    Лучше с CopyFileEx конечно.

    Давайте, ктонибудь пройдём все файл операции, гуру откликнтесь!

    CopyDir CopyFile Delete и рекурсивно нужно! :\

    PS: Iczelion конечно хорошо для начала, но там одни окна! А мне и без окон много задач охота решить.
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    SHFileOperation и никаких рекурсий ненужно.
     
  3. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Ну да ещё скажите IFileOperation::CopyItems Method :)
    Итак простое не прёт.

    int SHFileOperation(
    LPSHFILEOPSTRUCT lpFileOp
    );
    где lpFileOp уводит в дебри msdn.... ;-

    -- фасм кампилит это >
    но memory read окно вылетает... :dntknw:
    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 - просто другой код еррора ;)

    А насчёт рекурсии, хотелось бы чтоб *.* возможно было применять... с кучей папок внутри...
     
  4. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    CreateFile для самых маленьких
    Код (Text):
    1. ;format PE GUI 5.0
    2. include '%fasm%\win32ax.inc'
    3.  
    4. section '.code' code readable executable
    5. start:
    6. invoke  CreateFile,echo,GENERIC_WRITE,\
    7. FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
    8.  
    9. invoke ExitProcess,0
    10. .end start
    11.  
    12. section '.data' data readable writeable
    13. echo db 'C:\HelloWorld.txt',0
    offtop: Интересно, что тут какой-то упрощённый формат .end start причём так же нету никакого импорта...
    я попробовал переделать в entry start и сразу же весь код заглючило :)
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
     
  6. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Код (Text):
    1. format PE GUI 5.0
    2. include '%fasm%\win32ax.inc'
    3.  
    4. section '.code' code readable executable
    5. start:
    6. xor eax,eax ; навсякий случай :-)
    7. invoke CopyFile,lpExistingFileName,lpNewFileName,1
    8. invoke ExitProcess,0 ; все глюки были из-за этого!
    9. .end start
    10.  
    11. section '.data' data readable writeable
    12. lpExistingFileName db 'C:\~\system32\calc.exe'
    13. lpNewFileName db 'C:\calc.exe'
    не пашет. Может в XP только CopyFileEx реально работает?


    Код (Text):
    1. section '.data' data readable writeable
    2. lpExistingFileName db 'C:\NTDETECT.COM'
    3. lpNewFileName db 'C:\NTDETECT.EXE'
    4. lpProgressRoutine db 'PROGRESS_CONTINUE'
    5. lpData dw ?
    6. pbCancel dw ?
    7. dwCopyFlags db 'COPY_FILE_ALLOW_DECRYPTED_DESTINATION'
    8.  
    9. section '.code' code readable executable
    10. start:
    11. invoke CopyFileEx,lpExistingFileName,lpNewFileName,lpProgressRoutine,lpData,pbCancel,dwCopyFlags
    12. invoke ExitProcess,0
    13. .end start
    :dntknw: HELP!
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Semiono
    SHFileOperation - это самое простое, что можно предложить для такого случая.
     
  8. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Код (Text):
    1. format PE GUI 5.0
    2. include '%fasm%\win32ax.inc'
    3.  
    4. section '.data' data readable writeable
    5. hwnd dd ?
    6. wFunc db 'FO_COPY'
    7. pFrom db 'C:\\~\\Apps\\OllyDbg\\*\0'
    8. pTo db 'C:\\tmp'
    9. fFlags db 'FOF_SILENT'
    10. fAnyOperationsAborted db 'FALSE'
    11. hNameMappings dd 'NULL'
    12. lpszProgressTitle dd 'NULL'
    13.  
    14. section '.code' code readable executable
    15. start:
    16.  
    17. invoke SHFileOperation,\
    18.        hwnd,\ ; для коментариеф :)
    19.        wFunc,\ ; ....
    20.        pFrom,\ ; ...
    21.        pTo,\
    22.        fFlags,\
    23.        fAnyOperationsAborted,\
    24.        hNameMappings,\
    25.        lpszProgressTitle
    26.  
    27. invoke ExitProcess,0
    28. .end start
    Много ошибок? Хендл чтоль нужен ещё?
    Двойные \\ это для си или для всех?
    Если поля имеют значение опционально, чем их затыкать NULL или 0 ? Иль пофиг? :)

    ================
    АААА! Получилось! beer CopyFile попёр! Интересдно, он чё-то из system32 именно косячил...
    Из {pf} сразу тяпнул нормально! И ещё я когда импорт сам определял, то в дебаггере какие-то
    filename.exej приписывалось! гы! Ну главное аптимизм добавило! :
    Я вот так теперь стал делать lpNewFileName db 'C:\c.exe',0 нормально так хоть?
     
  9. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Рабочий код программы, как и хотелось продолжу minihowto по фасму :)
    Видимо я где-то сам ошибку допустил, всё работает из любых папок!
    Код (Text):
    1. ; копируем файл...
    2. include '%fasm%\win32ax.inc'
    3.  
    4. section '.code' code readable executable
    5. start:
    6. invoke CopyFile,lpExistingFileName,lpNewFileName,FALSE
    7. invoke ExitProcess,0
    8. .end start
    9.  
    10. section '.data' data readable writeable
    11. lpExistingFileName db 'C:\~\system32\ntkrnlpa.exe',0
    12. lpNewFileName db 'C:\kernel.exe',0
    --------
    А вот эта функция что-то ничего полезного вроде не содержит, причём ещё и не заводится.
    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2.  
    3. section '.code' code readable executable
    4. start:
    5. invoke CopyFileEx,lpExistingFileName,lpNewFileName,\
    6. lpProgressRoutine,lpData,pbCancel,dwCopyFlags
    7. invoke ExitProcess,0
    8. .end start
    9.  
    10. section '.data' data readable writeable
    11. lpExistingFileName db 'C:\~\system32\calc.exe',0
    12. lpNewFileName db 'C:\calc.exe',0
    13. lpProgressRoutine dd 'NULL'
    14. lpData dd 'NULL'
    15. pbCancel db 'TRUE'
    16. dwCopyFlags dw 0x00000008
    Пора бы SHFileOperation заняться, чего я сильно боюсь! Хоть бы чуть показали :)
     
  10. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Я на вас дивлюс

    мсдн показать?

    А это вообще шедевр:
    пиши хэллоу ворлд сначал, а не рекурсию по директориям.
     
  11. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    >> пиши хэллоу ворлд сначал,
    Ну а что его писать! Что мозгов прибавляет?
    Между хэло ворлд и копированием файлов огромный овраг через который надо перепрыгнуть.

    Каждый раз по поводу асма впадаю в дипрессию, так как нет гуру рядом, чтоб чуток продвинуться в самом начале... :\

    Это я прикалываюсь так -
    lpData dd 'NULL'

    msdn хороший, но функции создавались извращенцами. ни одного обыкновеного действия не выполнить, чтоб с ног на голову не стать! одна лишь борьба за секьюрность! а вот чтоб файлик
    скопировать если ему атрибут RO встретился, то блин надо ещё и атрибут установить,
    какбудто нельзя было всё в одно действие впихнуть! Ненужных флагов и опций тучами! ;-
     
  12. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Semiono
    Что за манера объявлять все непонятное ненужным?
     
  13. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752