Приклеить пароль на exe-шник(dllMain и проблемы)

Тема в разделе "LANGS.C", создана пользователем Gustav, 20 янв 2019.

Метки:
  1. Gustav

    Gustav New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2019
    Сообщения:
    4
    Всем привет.
    Пишу программу, которая приклеивает dll к любому exe, выводит окно с запросом логина и пароля, проверяет на серваке и в случае успеха запускает программу.
    Инжектор dll написал. Но возникла проблема с dll. Вывожу окно в DllMain по DLL_PROCCESS_ATTACH, но вместе с моим окном выводится уже окно приложения. Как его залочить, чтобы оно открывалось только поcле проверки логина и пароля в DLLMain?
    P.S. окно с логином и паролем создается в отдельном потоке (через CreateThread)
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.242
    выполнять проверку в основном потоке, а не в отдельном, как бы очевидно, не?
     
  3. Gustav

    Gustav New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2019
    Сообщения:
    4
    Ну я залочил, окно проверки логина и пароля не выводится.
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.242
    значит неправильно залочил, что ты от меня еще хочешь, я не телепат...
    --- Сообщение объединено, 20 янв 2019 ---
    в дллмейн, если длл грузится стандартными средставми, кроме инициализации ничего делать толком нельзя... патч точку входа экзешника на джамп на функцию проверки логина и пароля...
     
  5. Gustav

    Gustav New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2019
    Сообщения:
    4
    Я сделал так
    Код (C):
    1. BOOL APIENTRY DllMain( HMODULE hModule,
    2.   DWORD  ul_reason_for_call,
    3.   LPVOID lpReserved
    4.   )
    5.  
    6. {
    7.  BOOL passProcTerminate = false;
    8.  HANDLE passProc = NULL;
    9.   switch (ul_reason_for_call)
    10.   {
    11.   case DLL_PROCESS_ATTACH:
    12.  hDLL = (HINSTANCE)hModule;
    13.  passProc = CreateThread(0, NULL, ThreadProc, (LPVOID)L"Sign In", NULL, NULL);
    14.  break;
    15.   case DLL_THREAD_ATTACH:
    16.  break;
    17.   case DLL_THREAD_DETACH:
    18.  break;
    19.   case DLL_PROCESS_DETACH:
    20.  std::cout << "good-bye, world" << std::endl;
    21.   break;
    22.   }
    23.   return TRUE;
    24. }
    --- Сообщение объединено, 20 янв 2019 ---
    Может тогда лучше сделать прогу, которая запаковывает оригинальный exe, проверяет логин, распаковывает и запускает? Как это лучше реализовать?
     
    Последнее редактирование модератором: 20 янв 2019
  6. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Вкрути в это чудо TLS как у execryptor'а и удиви АВ )))

    а
    Код (C++):
    1. std::cout << "good-bye, world" << std::endl;
    оставь - это важно :cools:

    :read:
     
  7. Gustav

    Gustav New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2019
    Сообщения:
    4
    :sarcastic: это я пожалуй уберу, это слизано у КК
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.242
    ну можно через упаковщик реализовать... можно еще зашифровать на рандомном ключе, зашить идентификатор ключа в экзешник, передавать на сервер идентификатор, а в ответе от сервера получать ключ по идентификатору... так будет сложнее распаковать полезную нагрузку, тк в получившемся экзешнике не будет храниться ключа для расшифровки нагрузки... только само собой нужно нормальную крипту использовать (типа аес или рц4 на худой конец), а не какой-нить ксор по маске...