Загрузка...

Autoload in safe mode

Thread in C/C++ created by Podorozhnyk Apr 16, 2022. 241 view

  1. Podorozhnyk
    Podorozhnyk Topic starter Apr 16, 2022 0 Aug 18, 2020
    C
    bool WinlogonSet(wstring lpPath)
    {
    HKEY hKey = NULL;
    const TCHAR winlogonDir[MAX_PATH] = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\";
    TCHAR lpBuffer[MAX_PATH];

    wcscpy_s(lpBuffer, L"explorer.exe, ");
    wcscat_s(lpBuffer, lpPath.c_str());

    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, winlogonDir, NULL, KEY_WRITE, &hKey) != ERROR_SUCCESS) {
    return false;
    }
    if (RegSetValueEx(hKey, L"Shell", 0, REG_SZ, (PBYTE)lpBuffer, MAX_PATH) != ERROR_SUCCESS) {
    return false;
    }

    RegCloseKey(hKey);
    return true;
    }

    Этот код создает по пути запись, которая должна осуществлять автозапуск как в обычном режиме, так и в безопасном. Но при тесте возникла проблема. Запись создается, но после перезапуска программа не стартует. Но если изменить как-нибудь эту запись (например, добавить пробел в конце) и перезапустить систему, то после загрузки программа стартует и с этого момента будет включаться после каждого перезапуска. Чем это можно объяснить?
     
  2. Replacer
    Replacer Apr 17, 2022 ARTIFICIAL SUICIDE 99 Jul 21, 2021
    Объяснить можно изменением системного значения (т.е зарезервированного изначально), думаю, поэтому оно может так тупить. Пытался добавлять еще какие-либо символы или колдовать со значением? Если говорить по факту - необходимо подвергать это дебагу, смотреть, что выкидывает в случаях, что ты описал.
    Не пробовал реализавоть тот же COM Hijacking, к примеру?
     
    1. View previous comments (5)
    2. Replacer
      Podorozhnyk, не, я попутал кое-что, прости меня. Попробуй записаться в Userinit и посмотреть, будет ли та же проблема:
      C
      #include <Windows.h>
      #include <winreg.h>

      #pragma comment(linker, "/entry:EntryPoint")
      #pragma comment(linker, "/subsystem:windows")

      //Winlogon persistence
      BOOL InstallPersistence() {
      HKEY hKey = HKEY_LOCAL_MACHINE;
      LPCWSTR lpSubKey = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";
      WCHAR wBuff[MAX_PATH];

      //Путь до файла
      WCHAR szFile[MAX_PATH];
      GetModuleFileName(NULL, (LPWSTR)szFile, sizeof(szFile));

      lstrcpyW(wBuff, L"C:\\Windows\\system32\\userinit.exe, ");
      lstrcatW(wBuff, szFile);

      if (RegOpenKey(hKey, lpSubKey, &hKey) == ERROR_SUCCESS) {
      if (RegSetValueExW(hKey, L"Userinit", 0, REG_SZ, (const BYTE*)wBuff, sizeof(wBuff)) == ERROR_SUCCESS) {
      RegCloseKey(hKey);
      return TRUE;
      }
      }

      return FALSE;
      }

      DWORD APIENTRY EntryPoint() {
      if(InstallPersistence() != TRUE) {
      DWORD dwErr = GetLastError();
      return dwErr;
      }

      MessageBox(NULL, L"WinLogon: Installed", L"WinLogon", MB_OK);

      return 0;
      }
    3. Podorozhnyk Topic starter
      Replacer, щас протестирую. Спасибо
    4. Podorozhnyk Topic starter
      Replacer, я сделал пару тестовых попыток, но результат тот же. Запись создается, но ничего не запускается, пока не добавить что-то вручную
    5. View the next comments (3)
Top
Loading...