Реально ли изменить поведение при User32.dll,LockWorkSation?

Тема в разделе "WASM.RESEARCH", создана пользователем Real_Root, 5 май 2010.

  1. Real_Root

    Real_Root New Member

    Публикаций:
    0
    Регистрация:
    5 май 2010
    Сообщения:
    3
    Скажите пожалуйста, реально ли пропатчить user32.dll так, что бы при вызове функции LockWorkStation выполнялась не блокировка системы, а выполнялась программа или скрипт (к примеру 111.cmd или 111.exe). Или реально ли пропатчить файл http://ifolder.ru/17580073, так чтобы выполнялась не LockWorkStation, а программа или скрипт.

    Если интресно, то вот для чего это нужно:
    Есть замечательная программа удаленного администрирования Remonte Office Manager. Отличает ее от других продуктов (Radmin и т.д.) то, что она может (по желанию) блокировать экран и устройства ввода удаленного компьютера. Т.е. чтобы пользователь на управляемом компьютере не мог подсмотреть/принять участие в процессе. Но, есть одно но. Если связь с удаленным компьютером прекращается, то максимум что может сделать программа - это выполнить LockWorkStation. Это все хорошо, если упрвление идет сервером, и за ним никто не работате - он так и будет стоять в локе - пасс то никто не знает.
    Но в случае с локальным пользователем, пасс ему известен, и он спокойно сможет войти в систему. Вот конкретный пример: У администратора есть зашифрованный том TrueCrypt с системными программами, серийными номерами и другой конфидециальной информацией. Сисадмин подключается к удаленному компьютеру, открывает (монтирует) том TrueCrypt для устанвоки ПО и ввода серийников. В этот момент юзер, умышленно вытаскивает сетевой кабель из сетевухи, и программа ROM Server выполняет User32.dll,LockWorkStation. Но, юзер имеет локальный пароль и спокойно заходит в систему, при этом том TrueCrypt остается смонтированным и вся конфидециальныая информация стала.....
    Что я хочу: Чтобы выполнялась не LockWorkStation, а моя программа или скрипт. В скрипте я могу автоматом размонтировать том, закрыть нужные программы, или вообще выполнить LogOff.
    Все было бы классно, да вот буквально на днях контора, разрабатывающая программу aledensoft (http://aledensoft.ru) прекратила свое существование Задал вопрос разработчику - говорят мол с удовольствием, но не имею права. Чзрез пару месяцев будет новый продукт от другой компани, мол в нем это будет...
    Но, как Вы сами понимаете, нужно здесь и сейчас.

    Если есть возможность помогите советом/патчем/результатом.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    перехвати ее, и выполняй свой скрипт %)
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Real_Root
    Во первых не работает ваша софтина ни на виртуалке, ни на рельном железе в XP. Ждёт чегото или мб деадлок какой хз. Во вторых не вижу в экзешнике никаких признаков этой апи, более того, насколько знаю в текущей сессии вызвать LockWorkStation() может только процесс единажды вызвавший RegisterLogonProcess(), тоесть сторонее приложение её юзать не может, хотя могу и ошибаться. Для начала нужно найти что и где изменять.
     
  4. Real_Root

    Real_Root New Member

    Публикаций:
    0
    Регистрация:
    5 май 2010
    Сообщения:
    3
    Clerk
    Если exe-шник смотреть WinHEX ом, то по смещению (или как оно там называется - я сисадмин :) ) h171C28, есть код: LockWorkStation...........user32.dll
    Отсюда я и подумал, что софтина блокирует комп через вызов rundll32.exe user32.dll,LockWorkStation. Я даже более, чем уверен, что она делает именно так.
    Ну, а тот exe-шник - это серверная часть приложения. если хотите поиграться с целым софтом, то вот ссылочка: http://rapidshare.com/files/350774671/ROM.v4.1.2-Full.rar пасс: ru-board
    Большое спасибо, за то что откликнулись.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Real_Root
    Ага, есть такое. Я только в статике смотрел :)
    Код (Text):
    1. Base = 0x400000
    2.  
    3. 005727F4    55          push ebp
    4. 005727F5    8BEC            mov ebp,esp
    5. 005727F7    53          push ebx
    6. 005727F8    B8 D42E6F00     mov eax,ROMServe.006F2ED4
    7. 005727FD    B9 28285700     mov ecx,ROMServe.00572828   ;  ASCII "LockWorkStation"
    8. 00572802    BA 44285700     mov edx,ROMServe.00572844   ;  ASCII "user32.dll"
    9. 00572807    E8 B8CEEDFF     call ROMServe.0044F6C4
    10. 0057280C    89EC            mov esp,ebp
    11. 0057280E    5D          pop ebp
    12. 0057280F    FF25 D42E6F00       jmp dword ptr ds:[6F2ED4]
    Сомневаюсь что оно работает, только из под винлогона может быть вызвано.. впрочем не важно. На дельфе написана тулза, если никаких самопроверок нет, то пропатчите это место.
     
  6. Real_Root

    Real_Root New Member

    Публикаций:
    0
    Регистрация:
    5 май 2010
    Сообщения:
    3
    Еслиб я еще ассемблер занл...
    Я только VB да cmd и знаю :) Ну немножечко Delphi7 изучал.
    Может быть подскажите, что нужно сделать, чтобы программа выполняла не это, а конкретный exe-файл?

    Попробуйте в командной строке выполнить rundll32.exe user32.dll,LockWorkStation
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Real_Root
    Я бы длл-ку прицепил, само удобно и из памяти запускал, хотя лучше с диска, тогда можно её изменять без изменения целевого экзешника. Просто поменяйте имя User32.dll на имя своего модуля и добавьте ему в экспорт функу LockWorkStation, либо её имя тоже измените.