Хуки и порты

Тема в разделе "Общие вопросы по С и С++", создана пользователем lamez, 30 авг 2008.

  1. lamez

    lamez Гость

    WINDOWS. Задача такая. Висит приложение в бэке (используем хук соотв), колбачит нажатие клавы. Нажалась кнопочка - установка даты на LPT и холодный неон завис в свете на 200мс.
    Для задержки в свете неона - между выводами в порт числа ставим Sleep(200). Дело в том, что в самой функции CALLBACK KeyboardProc нельзя ставить эти операции, ибо клава будет тормозить, как и сама система. То есть так нельзя:
    [codebox]LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){
    if (nCode)
    return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
    if(lParam>0)
    {
    Outb(888,1);
    Sleep(200);
    Outb(888,0);
    }
    return CallNextHookEx(NULL,nCode,wParam,lParam);
    }[/codebox]
    ТАК НЕЛЬЗЯ.
    Я ламер и я решил запустить подпроцесс, или как он там называется))). CreateThread вобщем сделать)) и в этом подпроцессе следить за внешней переменной, которая бы устанавливалась в вышевыложенном колбаке. Ну и по условию в подпроцессе вывести в порт с задержкой.
    Тоесть:
    [codebox]
    extern bool boleano_mego_alko_variable;

    LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){
    if (nCode)
    return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
    if(lParam>0)
    {
    boleano_mego_alko_variable = true;
    }
    return CallNextHookEx(NULL,nCode,wParam,lParam);
    }

    DWORD WINAPI thproc(LPVOID lpParam){
    while(1){
    if(boleano_mego_alko_variable){
    Out32(BASEPORT, 1);
    Sleep(200);
    Out32(BASEPORT, 0);
    mego_alko_variable = false;
    }
    Sleep(10);
    }
    }

    BOOL APIENTRY DllMain( HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
    )
    {
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    {
    if(!hi){
    hi = hModule;
    Out32(BASEPORT,0);

    CreateThread( NULL, 0, thproc, NULL, 0, NULL);
    }
    }
    break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    break;
    }
    return TRUE;
    }

    [/codebox]
    ОТНЮДЬ! Это тоже неправильно))). Подпроцесс не выполняется, [CENSORED], в таком случае на всех окнах, приложениях, а выполняется только тогда, когда я общаюсь с терминалом)).
    ПОМОГИТЕ!!! Как мне еще можно выйти из этой ситуации.
     
  2. lamez

    lamez Гость

    А, скажем, если я создаю AfxBeginThread(MyThreadFunc,NULL,THREAD_PRIORITY_NORMAL,0,0); То никакой реакции не вызывает.
     
  3. zubr

    zubr Гость

    Хмм.. Возникает ряд вопросов.
    1. Что от любой кнопочки должен зажигаться неон?
    2. Зачем проверять lParam>0

    Чтобы клавиатура не зависала, можно сделать так:
    Код (Text):
    DWORD WINAPI thproc(LPVOID lpParam){
    Outb(888,1);
    Sleep(200);
    Outb(888,0);
    }

    LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){
    if (nCode)
    return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
    if(lParam>0)
    {
    CreateThread( NULL, 0, thproc, NULL, 0, NULL);
    }
    return CallNextHookEx(NULL,nCode,wParam,lParam);
    }
     
  4. lamez

    lamez Гость

    Возникает ряд ответов
    1. Да, именно, от любой))). Я в одном кабинете сижу, а подчиненный - в другом, так я буду видеть то, что он печатает)), не отдыхает))
    2. Эмм.. Я ламер), точно не знаю, но в статье написано, что в таком случае будет проверяться только нажатие.

    Спасибо, проблема решена. Теперь всё работает. Вот только я не пойму почему всё так вышло, особенно с консолью)) Мистика).
     
  5. zubr

    zubr Гость

    Хмм... Странный способ отслеживать подчиненных. А если он в чате общается, при этом быстро тиская на клавиатуру, или в игрушку какую играет... Ну и потом легко сделать программульку, которая будет имитировать нажатие клавиш. Уж лучше просто через штатные средства удаленного администрирования контролировать подчиненных (если есть возможность вторкнуть какую то хрень в LPT-порт, то наверно можно и сетевой кабель вторкнуть). На худой конец можно кейлоггер поставить на комп подчиненного, чтобы он логи писал нажатия клавиш - подчиненный ушел домой, открыл лог, посмотрел по времени какие клавиши нажимал.
     
  6. lamez

    lamez Гость

    Ну с неоном - это сделано просто для прикола)). А на самом деле, правда я еще это не сделал)), будут отслеживаться приложения(активные окна тем же хуком) и время их запуска, записываться нажатие клавиш в лог и отправляться мне)), думаю даже в реалтайме слежку устроить)). Почитал сетевое программирование, посмотрим что получится.
     
  7. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    сотрудников потеряете....
     
  8. lamez

    lamez Гость

    Однако, всё очень даже хорошо до сих пор!%)
    Думаю продавать эту систему))), шучу))),
    ...но производительность всего цто выросла на 30%!!!%)
     
Загрузка...
Похожие Темы - Хуки порты
  1. gURaBA_N
    Ответов:
    2
    Просмотров:
    87
  2. MAD

    Порты

    MAD, 11 янв 2016, в разделе: Kali Linux
    Ответов:
    1
    Просмотров:
    434
  3. aameno2
    Ответов:
    0
    Просмотров:
    940
  4. talgin
    Ответов:
    4
    Просмотров:
    1.785

Поделиться этой страницей