Доброе время. Хотелось бы улышать мнение вас, по поводу того, как приложения могут общатся между собой. Помимо мьютесков, евентов, секций, промепленных фаилов, сообщений. ПС: Есть программа, флеш, и каким-то образом она находит что присутствует второй экземпляр. Я наковырял, что первый заслон был создание секции(те меплился фаил с хендлом -1). Это дело я обошел, но через некоторое время, прога вываливается, мол, есть уже копия(( Причем вываливается копия так, которая была запущена раньше. Второй вопрос: Не мешаю проге создать мапленый фаил, мапит она память. Потом я закрываю хендл созданный createfilemap***. При запуске второго экземпляра будетли эта область памяти разделена между процессами? ЗЗЫ: Извените за, возможный, сумбур в вопросе.
Вполне возможно и такое. Особенно если один процесс пораждает другой, это банально. Но если ты сам запускаешь вторичный экземпляр, то наследование может сработать таким способом, как например, повторное открытие того же участка или DuplicateHandle... В этом случае спроецированный участок данных дается в использование и твоему процессу. Общатся можно через мои любимые файловые ntfs потоки, и особенно через то что ты уже назвал. Реестр - старье, а тоже средство. Разумеется твоя программа может искать по сигнатуре, например название процесса, объекта (системные "доступны всем"), caption в конце концов...
Защиту осуществляет влеш плеер от макромедии. Процессы запускаю я сам. Общаются процессы не через разделяемую память(( Поскольку в ручную(муть млин) изменил в первой копии названия, мьютексов и секций, так шо не этим способом общаются. Да и реестр шерстил, думаю, что не сдесь проблема. ---- НТВС, врятли, но не проверял(подскажите где почитать). ---- Но, то, что вываливается первая копия наталкивает на мысль, что вторая запущеная, что-то перетерает. Отрезал все именованые обьекты(закрывал хендлы) в первой копии. А потом вторую запускал, но эффект тот же. ---- Толькочто заметил, что есть какой-то обьект port с именем blabla\OLE??(где ?? цыфра). Может сдесь есть что? ---- У кого какие еще соображения? Уже не просто интересно......
SammIk пусть общаються через файл. Пишут и читают оба. Записал установил событие, прочитал снял. В озу как раз всё висеть не будет.
Nimnul Ламерство не ламерство, в таких случаях проверяют все возможные варианты. Лучше всего поставить анализаторы обращений к файлам и реестру для начала (если это еще не было сделано).
Нет, маил слотов прога не открывает. Сегодня продолжу копание. Как только, сразу отпишу что нашел. Кстати, олипорт закрываю. Но эта бяка, всеравно как-то находит второй экземпляр. Проверю на реестр и на фаил.
Оказалось не ламерство(про фаил). В итоге потяряв всякую надежду(сильно спать хотелось), забил на эту защиту. А сегодня утром, врубил свой любимый фаил мон, и нашел таки эту гадость. Фух, теперь придется перехватывать доступ к фаилу и подсовывать нужные данные. Или кто может предложить другой вариант?
Увы, критично. Я думаю, перехватывать создание фаила, и подсовывать фиктивный хендл, с помощю которого отлавливать обращение к фаилу. Фаил создаваться не будет. Посмотрим что выидет. ------- Каким образом можно создать фаил? OpenFile программа не использует, а CreateFile используется только с флагом OPEN_EXISTING. Как я понял, из сдк, при этом флаге, если нет фаил, возвращается ошибка, а фаил не создается. Однако фаил в коталоге появляется. Поиду дальше рыть [ДОБАВЛЕНО] Блин, немогу=)) Если смотреть на логи фаилмона, то в фаил ничего не пишется. Но, увы, фаил как-то заполняется. Грустно( Ушел в медитацию
Народ у кого ХР, подскажите какие первые 3-4 инструкции в ф-ях CreateFileW WriteFile ReadFile CloseHandle(Или эту ф-ю не обязательно хватать, но на всякий случаи скажитн). Спасибо всем ответившим и тем уто еще ответит
Все вошло на круги своя. Суть защиты. Первый круг: Создавалась разделяемая секция. Следующий запущеный процесс смотрел есть ли такая секция, и если была, то не грузилось. Второи круг: Создается фаил, в него пишется инфо. Если юзер желал что-то сделать, то читалась информация. Запись производится й раз при вводе пароля. Следовательно второй запущеный процесс перетерал запись, а первыи матерился. Но, мать их, в макромедии работают шутники. Они в это фаил непосредственно не пишут. А пишут в другой фаил( с замененным расширением) а после записи, просто переименовывали его ф-ей movefile. Поэтому я никак не мог отловить эту запись в фаил. Огромное спасибо тем, кто помогал. ЗЫЖ Хороший опыт получил. ЗЗЫЖ Насчет стабов ф-ии отпишите пожалуйсто.