1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Запуск драйвера и работа с ним

Тема в разделе "WASM.NT.KERNEL", создана пользователем 9two, 9 дек 2017.

  1. 9two

    9two New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2017
    Сообщения:
    8
    У кого ни будь есть функция установки драйвера?
     
  2. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    91
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
    Это как?
     
  3. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    669
    OpenSCManager
    CreateService/OpenService
    StartService
    ControlService
    DeleteService
     
    yashechka нравится это.
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.481
    Странный вопрос, инфы ведь достаточно.

    оффтоп:
    Thetrik, а что у вас под ником, это марка 8-бит проца https://ru.wikipedia.org/wiki/Ricoh_2A03 ?
    Просто интересно что это значит :scratch_one-s_head:
     
  5. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    91
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
    Микросхема денди, в которой 6502 и ещё что-то.
     
  6. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    669
    Indy_, да, проц Dendy.
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.481
    А что это значит ?
     
  8. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    91
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
    Человек изобрёл эту микросхему, что непонятно ?
     
  9. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    669
    Indy_, ничего, просто изучал одно время архитектуру этой консоли.
     
    yashechka и Indy_ нравится это.
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.481
    Понятно.

    Кстате аватарку поставьте, это помогает вниманию.
     
  11. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    91
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
    Я писал эмулятор, но бросил. Очень нравится денди и сега.
     
    Thetrik и Indy_ нравится это.
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    669
    Я хотел что-то подобное на AVR написать, но потом понял что не стоит тратить на это время, да и уже были такие проекты.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.481
    yashechka,

    По своему опыту в детстве могу сделать вывод что эти консоли вызывают зависимость и вредоносны. Играть сутками и думать только об этом - типичная зависимость. Имхо не следует допускать детей к этим устройствам. Точнее должны решить ответственные за разум(человека) люди, родители к примеру, зная разум человека и принять решение допустить к таким играм или нет.
     
    TermoSINteZ нравится это.
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    1
    Регистрация:
    11 июн 2004
    Сообщения:
    3.474
    Адрес:
    Russia
    Indy_, полностью поддерживаю
     
  15. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.089
    Это те, которые верят, что от игор кинескоп садится? Ну-ну :)
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.481
    rmn,

    Прошло овер 20 лет, но у меня остались яркие впечатления и воспоминания. Dendy была ловушкой, это когнитивный наркотик". На той площадке были довольно продвинутые игры, очень сильно продумана динамика. Возможно даже что эта ловушка была создана намеренно. Спустя столько времени всё равно есть желание поиграть в те игры.
    Можно понять какое сильное воздействие в том возрасте это оказывало на разум, затягивало. Так что я неготивно отношусь к играм и таким консолям.
     
  17. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    91
    Регистрация:
    2 янв 2012
    Сообщения:
    1.484
    Адрес:
    Россия
    У каждого по-своему. Мне приятно вспоминать, что у меня было детство и денди. Денди много добавила в мою жизнь. Такого детства уже ни у кого не будет. У нас у детей 90х было настоящее детство. Не скажу, что я за ней залипал, но играл часа 2-3 в день. А вот дети 2000, это уже не дети - это также имхо. Я написал эмулятор процессора, но дальше у меня ничего не получилось, даже пиксели выводить. Считаю, что у денди архитектура сложнее, чем у сеги. У сеги 16бит и картридж проще, а у денди он намного сложнее. Не зря столько мапперов придумано для денди. А у сеги хватало 4 мега даже для мортала. Может когда-нить снова возьмусь переписать чей нить эмулятор, чтобы понять как работает видео процессор и блитинг.
    Вот такая у меня книга
    [​IMG]
     
    Thetrik и Indy_ нравится это.
  18. unc1e

    unc1e Active Member

    Публикаций:
    2
    Регистрация:
    28 июл 2017
    Сообщения:
    289
    9two,
    Код (C):
    1. int LoadDriver()
    2. {
    3.     wchar_t ErrCode[50];
    4.  
    5.     SC_HANDLE sch = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS);
    6.     if (!sch)
    7.     {
    8.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    9.         MessageBox(0, ErrCode, L"(1)Error OpenSCManager...", MB_OK | MB_ICONERROR);
    10.         return 0;
    11.     }
    12.  
    13.     wchar_t DriverPath[MAX_PATH];
    14.     if (_WinMain.isLongMode)
    15.         GetFullPathName(DRIVER_PATH64, MAX_PATH, DriverPath, NULL);
    16.     else
    17.         GetFullPathName(DRIVER_PATH, MAX_PATH, DriverPath, NULL);
    18.  
    19.     SC_HANDLE schService = CreateService(sch,
    20.         SERVICE_NAME, SERVICE_NAME, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
    21.         SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, DriverPath, 0, 0, 0, 0, 0);
    22.     if (!schService)
    23.     {
    24.         if (GetLastError() != ERROR_SERVICE_EXISTS)
    25.         {
    26.             swprintf_s(ErrCode, 50, L"%d", GetLastError());
    27.             MessageBox(0, ErrCode, L"(1)Error CreateService (1)...", MB_OK | MB_ICONERROR);
    28.             return 0;
    29.         }
    30.  
    31.         UnloadDriver();
    32.         schService = CreateService(sch,
    33.             SERVICE_NAME, SERVICE_NAME, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
    34.             SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, DriverPath, 0, 0, 0, 0, 0);
    35.         if (!schService)
    36.         {
    37.             swprintf_s(ErrCode, 50, L"%d", GetLastError());
    38.             MessageBox(0, ErrCode, L"(1)Error CreateService (2)...", MB_OK | MB_ICONERROR);
    39.             return 0;
    40.         }
    41.     }
    42.  
    43.     if (!StartService(schService, 0, 0))
    44.     {
    45.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    46.         MessageBox(0, ErrCode, L"(1)Error StartService...", MB_OK | MB_ICONERROR);
    47.         return 0;
    48.     }
    49.  
    50.     if (!CloseServiceHandle(schService))
    51.     {
    52.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    53.         MessageBox(0, ErrCode, L"(1)Error CloseServiceHandle (1)...", MB_OK | MB_ICONERROR);
    54.         return 0;
    55.     }
    56.  
    57.     if (!CloseServiceHandle(sch))
    58.     {
    59.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    60.         MessageBox(0, ErrCode, L"(1)Error CloseServiceHandle (2)...", MB_OK | MB_ICONERROR);
    61.         return 0;
    62.     }
    63.  
    64.     return 1;
    65. }
    Код (C):
    1. int UnloadDriver()
    2. {
    3.     wchar_t ErrCode[50];
    4.  
    5.     SC_HANDLE sch = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS);
    6.     if (!sch)
    7.     {
    8.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    9.         MessageBox(0, ErrCode, L"(2)Error OpenSCManager...", MB_OK | MB_ICONERROR);
    10.         return 0;
    11.     }
    12.  
    13.     wchar_t DriverPath[MAX_PATH];
    14.     if (_WinMain.isLongMode)
    15.         GetFullPathName(DRIVER_PATH64, MAX_PATH, DriverPath, NULL);
    16.     else
    17.         GetFullPathName(DRIVER_PATH, MAX_PATH, DriverPath, NULL);
    18.  
    19.     SC_HANDLE schService = OpenService(sch, SERVICE_NAME, SERVICE_ALL_ACCESS);
    20.     if (!schService)
    21.     {
    22.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    23.         MessageBox(0, ErrCode, L"(2)Error CreateService...", MB_OK | MB_ICONERROR);
    24.         return 0;
    25.     }
    26.  
    27.     SERVICE_STATUS ServiceStatus;
    28.     if (!ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus))
    29.     {
    30.         if (GetLastError() != ERROR_SERVICE_NOT_ACTIVE)
    31.         {
    32.             swprintf_s(ErrCode, 50, L"%d", GetLastError());
    33.             MessageBox(0, ErrCode, L"(2)Error ControlService...", MB_OK | MB_ICONERROR);
    34.             return 0;
    35.         }
    36.     }
    37.  
    38.     if (!DeleteService(schService))
    39.     {
    40.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    41.         MessageBox(0, ErrCode, L"(2)Error DeleteService...", MB_OK | MB_ICONERROR);
    42.         return 0;
    43.     }
    44.  
    45.     if (!CloseServiceHandle(schService))
    46.     {
    47.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    48.         MessageBox(0, ErrCode, L"(2)Error CloseServiceHandle (1)...", MB_OK | MB_ICONERROR);
    49.         return 0;
    50.     }
    51.  
    52.     if (!CloseServiceHandle(sch))
    53.     {
    54.         swprintf_s(ErrCode, 50, L"%d", GetLastError());
    55.         MessageBox(0, ErrCode, L"(2)Error CloseServiceHandle (2)...", MB_OK | MB_ICONERROR);
    56.         return 0;
    57.     }
    58.  
    59.     return 1;
    60. }
     
    Mikl___ нравится это.
  19. unc1e

    unc1e Active Member

    Публикаций:
    2
    Регистрация:
    28 июл 2017
    Сообщения:
    289
    Если на драйвере нету цифровой подписи - под x64 начиная с win7 sp1 необходимо выполнить следующее:
    1) Все же подписать драйвер тестовой подписью
    2) Запустить этот батник
    Код ( (Unknown Language)):
    1. @echo off
    2.  call :isAdmin
    3.  if %errorlevel% == 0 (
    4.     goto :run
    5.  ) else (
    6.     echo Requesting administrative privileges...
    7.     goto :UACPrompt
    8.  )
    9.  exit /b
    10.  :isAdmin
    11.     fsutil dirty query %systemdrive% >nul
    12.  exit /b
    13.  :run
    14.    bcdedit.exe -set testsigning on
    15.    pause
    16.  exit /b
    17.  :UACPrompt
    18.    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    19.    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
    20.    "%temp%\getadmin.vbs"
    21.    del "%temp%\getadmin.vbs"
    22.   exit /B`
    3) Ребутнуть пк
    После этого можно загружать драйвер. После работы выгружаем его и запускаем следующий скрипт:
    Код ( (Unknown Language)):
    1. @echo off
    2.  call :isAdmin
    3.  if %errorlevel% == 0 (
    4.     goto :run
    5.  ) else (
    6.     echo Requesting administrative privileges...
    7.     goto :UACPrompt
    8.  )
    9.  exit /b
    10.  :isAdmin
    11.     fsutil dirty query %systemdrive% >nul
    12.  exit /b
    13.  :run
    14.    bcdedit.exe -set testsigning off
    15.    pause
    16.  exit /b
    17.  :UACPrompt
    18.    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    19.    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
    20.    "%temp%\getadmin.vbs"
    21.    del "%temp%\getadmin.vbs"
    22.   exit /B`
    Снова ребут и все будет как раньше.
     
    Mikl___ нравится это.