Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как бы сделать... разные пользователи... не знаю как в теме описать :( 
:(
    Опции темы
Djinn
Дата 3.2.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



есть программа которая не разрешает открыть 2 окна, но при этом 2 окна открываються в разных пользователях ! (запуск от имени другого пользователя не помогает, надо запустить именно 2 разных пользователя.)
Как можно виртуально реализовать разных пользователей ??? только что бы было в пределах одного рабочего стола...
В первую очередь меня интересует теория... а там уже можно и практику... smile

Всем очень благодарен заранее за помощь !
PM MAIL   Вверх
MAKCim
Дата 3.2.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 1
Всего: 207



какая среда и платформа реализации?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Djinn
Дата 21.2.2008, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Windows XP, C++ - WinAPI , разные левые классы и т. д. подойдут smile для меня пока главное результат... как вообще такое реализовать smile

Добавлено через 2 минуты и 52 секунды
извините пожайлуста что так долго не отвечал... благодарен Вам очень за помощь smile Надеюсь что это разрешимо... smile  smile 
PM MAIL   Вверх
xvr
Дата 21.2.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Djinn @ 3.2.2008,  14:45)
есть программа которая не разрешает открыть 2 окна, но при этом 2 окна открываються в разных пользователях ! (запуск от имени другого пользователя не помогает, надо запустить именно 2 разных пользователя.)
Как можно виртуально реализовать разных пользователей ??? только что бы было в пределах одного рабочего стола...
В первую очередь меня интересует теория... а там уже можно и практику... smile

Всем очень благодарен заранее за помощь !

См в MSDN функции LogonUser и CreateProcessAsUser

PM MAIL   Вверх
dumb
Дата 21.2.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



не нужно никого "виртуально реализовывать". надо просто найти вызов CreateMutex/CreateObject(как правило, именно эти функции и обычно первые их вызовы) в дизассемблированном коде и пропатчить оный. но могут быть глюки, если программа захватывает в единоличное владение какие-либо ресурсы в пределах сессии.

hint: exe'шник выложи куда-нибудь - посмотрим.
PM MAIL   Вверх
Djinn
Дата 21.2.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



так вот дело и в том что хотелось бы именно так сделать как я говорю... так как интересно бы розобраться... smile а в дизасемблере ф-ю... убрать то можно, но в данном случае не нужно (пройденый вариант...)

P.S. 
xvr, посмотрю щас в MSDN.... мож поможет, пасиба smile
PM MAIL   Вверх
Djinn
Дата 24.2.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



не, такие ф-и MSDN немного не то :( мы просто запускаем с правами другого пользователя программу... а мне надо именно симитировать нового пользователя: типа как запустил пользователя нажал win+L, выбрал другого пользователя и запустил прогу...
PM MAIL   Вверх
xvr
Дата 24.2.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Djinn @ 24.2.2008,  20:42)
не, такие ф-и MSDN немного не то :( мы просто запускаем с правами другого пользователя программу... а мне надо именно симитировать нового пользователя: типа как запустил пользователя нажал win+L, выбрал другого пользователя и запустил прогу...

Эти функции как раз то - запуск от имени другого пользователя. 

Цитата

нажал win+L, выбрал другого пользователя 
А это запуск от имени другого пользователя + на другом desktop'е. Если исходная программа ищет свою запущенную копию по FindWindow то именно тот факт, что запуск происходит на другом desktop'е и дает возможность запустить 2ю копию. От имени какого пользователя это происходит - по барабану.

Так что только манипуляции с окнами и desktop'ами  smile 
Можно попробовать найти окно запущенной программы и поменять имя окна  smile 
PM MAIL   Вверх
Djinn
Дата 25.2.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Цитата(xvr @  24.2.2008,  23:17 Найти цитируемый пост)
Так что только манипуляции с окнами и desktop'ами  smile 
Можно попробовать найти окно запущенной программы и поменять имя окна  smile  

а мог бы ты плз чтот росказать про это ? smile  smile  ну или хотябы названия ф-й или ссылочку какуюто...  smile 
PM MAIL   Вверх
xvr
Дата 26.2.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Djinn @ 25.2.2008,  21:50)
Цитата(xvr @  24.2.2008,  23:17 Найти цитируемый пост)
Так что только манипуляции с окнами и desktop'ами  smile 
Можно попробовать найти окно запущенной программы и поменять имя окна  smile  

а мог бы ты плз чтот росказать про это ? smile  smile  ну или хотябы названия ф-й или ссылочку какуюто...  smile

FindWindow - Ищет окно по заданному классу окна и заголовку (скорее всего программа использует эту функцию для поиска своей запущенной копии). При поиске можно не указывать ни имя класса ни заголовок. Если программа ищет без учета заголовка, то метод его подмены не пройдет  smile 
Для подмены делаем следующее:
  •  Ищем окно (FindWindow)
  •  Меняем ему заголовок (SetWindowText)
  •  Запускаем вторую копию программы
  •  Восстанавливаем заголовок (SetWindowText)

PM MAIL   Вверх
Djinn
Дата 2.3.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Не, по имени окна не катит тоже :(
походу по именни класса окна... мож ктот знает как можно сменить ?   smile  smile smile 
PM MAIL   Вверх
dumb
Дата 3.3.2008, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(Djinn @  21.2.2008,  16:47 Найти цитируемый пост)
а в дизасемблере ф-ю... убрать то можно, но в данном случае не нужно (пройденый вариант...)
если бы это был "пройденный вариант", ты бы не "тыкался" сейчас наугад. мало того, все построение этой твоей фразы говорит о том, что ты не понял(не хотел понять) ни слова, из того, что я тебе говорил.
ну да, как говорится, "хозяин - барин". перебирай варианты... smile
PM MAIL   Вверх
xvr
Дата 3.3.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(dumb @ 21.2.2008,  14:53)
не нужно никого "виртуально реализовывать". надо просто найти вызов CreateMutex/CreateObject(как правило, именно эти функции и обычно первые их вызовы) в дизассемблированном коде и пропатчить оный.

Не поможет. Судя по симптомам (возможность запуска на разных desktop'ах) используются не глобальные mutex'ы, а банальный поиск окна запущенного экземпляра программы по классу (окна).
Так что искать и пэтчить надо FindWindow (или FindWindowEx).

2 Djinn: Пэтчить не обязательно exe'ник, это можно сделать и в уже загруженной программе, не трогая исполняемый файл.

PM MAIL   Вверх
Djinn
Дата 3.3.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Цитата(dumb @  3.3.2008,  02:51 Найти цитируемый пост)
если бы это был "пройденный вариант", ты бы не "тыкался" сейчас наугад


Не будь так уверен... Просто раньше оно было по другому сделано...


Цитата(xvr @  3.3.2008,  12:10 Найти цитируемый пост)
2 Djinn: Пэтчить не обязательно exe'ник, это можно сделать и в уже загруженной программе, не трогая исполняемый файл.


Это понятно... так вот меня и интересует как можно сменить имя класса ??? наверняка есть ф-я какая нибудь... Щас сам поищу... если найду, то скажу... smile

Добавлено через 4 минуты и 7 секунд
Цитата(Djinn @  3.3.2008,  17:16 Найти цитируемый пост)
если бы это был "пройденный вариант", ты бы не "тыкался" сейчас наугад

Та и дело даже далеко не в этом... вобшем меня именно мало интересует патчить программу... скорее вариант со сменной класса окна... 
PM MAIL   Вверх
dumb
Дата 3.3.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(xvr @  3.3.2008,  12:10 Найти цитируемый пост)
Судя по симптомам (возможность запуска на разных desktop'ах) используются не глобальные mutex'ы,
.. а обычные, локальные в пределах сессии, mutex'ы/event'ы. (да, кстати, CreateObject - это "очепятка". конечно, CreateEvent)

Цитата(Djinn @  3.3.2008,  17:16 Найти цитируемый пост)
как можно сменить имя класса ??? наверняка есть ф-я какая нибудь...
нет.
Цитата(Djinn @  3.3.2008,  17:16 Найти цитируемый пост)
вобшем меня именно мало интересует патчить программу
основной смысл был не в патче, а в распознании метода защиты от повторного запуска, дабы потом осмысленно с ним побороться - методов немало.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.