Воскресенье
02.02.2025
16:42
Форма входа
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    OPEN SOURCE PROJECT

    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Win API
    andXreiДата: Суббота, 07.03.2009, 21:48 | Сообщение # 1
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Вот Алгоритм ::::\

    format PE GUI 4.0
    entry start
    include 'win32a.inc'

    section '.data' data readable writable

    lpPathName db 'C:\21.txt ',0

    section '.code' code readable executable

    start:

    invoke _lopen,lpPathName,0
    invoke ExitProcess,0

    section 'idata' import data readable writable
    library kernel,'KERNEL32.DLL'

    import kernel,\
    _lopen,'_lopen',\
    ExitProcess,'ExitProcess'

    Что здесь не правельно??? При компиляции ошибок не выдавало!!!! Файл 21.txt Существует\\\

    Подскажите!! sad

     
    fasmДата: Суббота, 07.03.2009, 23:15 | Сообщение # 2
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    В принципе все правильно, но не совсем понятно зачем так? surprised Ведь вы просто открываете дискриптор файла, если хотите просмотреть содержимое файла, то вот самый простой пример пример:
    Code

    format PE GUI 4.0
    entry start
    include '%fasminc%\win32a.inc'

    section '.data' data readable writable

         title             db 'Информация',0
         lpPathName        db 'C:\21.txt',0
         buffer            rb 512h ; buffer 512h byte = 1298 byte
         hfile             dd ? ; Тут будем хранить дескриптор

    section '.code' code readable executable

    start:
    ; Открываем файл
         invoke _lopen,lpPathName,0    
    ; Сохраняем дескриптор
         mov    [hfile], eax     
    ; Узнаем размер файла
         invoke GetFileSize, eax, 0    
    ; Читаем файл и   
         invoke _lread, [hfile], buffer, eax   
    ; Выводим сообщение с содержимым файла
         invoke MessageBox,0,buffer,title,MB_ICONINFORMATION   
    ; Закрываем открытый дескриптор
         invoke CloseHandle, [hfile]
         invoke ExitProcess,0

    section 'idata' import data readable writable

    library kernel,'KERNEL32.DLL',\
              user,'USER32.DLL'

    import kernel,\
             _lopen,'_lopen',\
             _lread,'_lread',\
             CloseHandle,'CloseHandle',\
             GetFileSize,'GetFileSize',\
             E xitProcess,'ExitProcess'

    import user,\
             MessageBox,'MessageBoxA'

    Так же оставляю ссылку на мною спроектированный блокнот делал давно, но так и не довел до конца, но для обучения хорош... Скачать блокнот с Яндекса

    Прикрепления: NOTEPADEDIT.rar (391.3 Kb)
     
    andXreiДата: Воскресенье, 08.03.2009, 12:11 | Сообщение # 3
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    А если надо запустить файл (.exe) а не просмотреть содержимое

    Какую функцию использовать>>?

     
    fasmДата: Воскресенье, 08.03.2009, 17:23 | Сообщение # 4
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Типа вирус пишем? biggrin

    invoke WinExec, lpCmdLine,\ // строка
                             [uCmdShow] // Стиль для нового окна  

    Для uCmdShow используй параметры:
    SW_SHOWNORMAL - Нормальный вид окна
    SW_HIDE - скрытое
    SW_MAXIMIZE - развернутое
    SW_MINIMIZE - минимизированный
    и т.д.

    Еще можно использовать CreateProcess, но если ты начинающий, то можно пока обойтись WinExec

     
    andXreiДата: Воскресенье, 08.03.2009, 21:11 | Сообщение # 5
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Да не это [пока.....Шучу] не вирус (что за вирус который просто открывает файл??!!! smile

    biggrin

    Сообщение отредактировал andXrei - Воскресенье, 08.03.2009, 21:12
     
    fasmДата: Воскресенье, 08.03.2009, 21:18 | Сообщение # 6
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Тот который сначала качает его из интернета biggrin
     
    andXreiДата: Понедельник, 09.03.2009, 08:02 | Сообщение # 7
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    Как я понял WinExec запускает только exe- файлы??

    Тогда функция CreateProcess может любые файлы запускать???
    Если да:
    то напишите этой функции параметры!! happy

    Сообщение отредактировал andXrei - Понедельник, 09.03.2009, 08:10
     
    fasmДата: Понедельник, 09.03.2009, 10:11 | Сообщение # 8
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    На сколько я помню WinExec запускает и com файлы.

    Алгоритмс запуска bat файлов. biggrin

    lpCmdLine db 'C:\Windows\System32\command.com', 20h
    db 'C:\autoexec.bat',0
    ...
    invoke WinExec, lpCmdLine, SW_SHOWNORMAL
    ...
    20h - это номер пробела

     
    andXreiДата: Понедельник, 09.03.2009, 11:45 | Сообщение # 9
    Майор
    Группа: Проверенные
    Сообщений: 95
    Репутация: 2
    Статус: Offline
    WinExec понятна, но меня интерисует функция CreateProcess

    Сообщение отредактировал andXrei - Понедельник, 09.03.2009, 11:46
     
    fasmДата: Понедельник, 09.03.2009, 21:39 | Сообщение # 10
    Admin
    Группа: Заблокированные
    Сообщений: 122
    Репутация: 5
    Статус: Offline
    Code

    BOOL CreateProcess(

         LPCTSTR lpApplicationName,    // pointer to name of executable module  
         LPTSTR lpCommandLine,    // pointer to command line string
         LPSECURITY_ATTRIBUTES lpProcessAttributes,    // pointer to process security attributes  
         LPSECURITY_ATTRIBUTES lpThreadAttributes,    // pointer to thread security attributes  
         BOOL bInheritHandles,    // handle inheritance flag  
         DWORD dwCreationFlags,    // creation flags  
         LPVOID lpEnvironment,    // pointer to new environment block  
         LPCTSTR lpCurrentDirectory,    // pointer to current directory name  
         LPSTARTUPINFO lpStartupInfo,    // pointer to STARTUPINFO  
         LPPROCESS_INFORMATION lpProcessInformation  // pointer to PROCESS_INFORMATION   
        );  
      

    Вот пожалуйста....

     
    • Страница 1 из 1
    • 1
    Поиск: