Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 11

Общая информция: взаимодействие между приложениями

23.04.2014, 13:24. Показов 2884. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопросы на понимание к уважаемой публике по взаимодействию между приложениями (я понимаю в php и JavaScript, но не в десктопных приложениях). Мне это нужно для заявки на патент и моего проекта.



Допустим, мы делаем приложение "Антивирус" (1 на рисунке), которое проверяет файлы на диске. Файлы для анализа ему указывает (стрелка 3) другие приложения. Например и в частности, приложение "Редактор" (2 на рисунке).

Вопрос 1. Как можно реализовать доставку пути к файлу, которое передается от приложения "Редактор" к приложению "Антивирус"?

Для веб-приложений, это я знаю в теории, взаимодействие между программами происходит через порты. Как обстоят дела и как это формулируется (в грамотных выражениях) для десктопных приложений? Слово API я слышал, но никогда сам не применял. "Приложение "Антивирус" предоставляет API сторонним приложениям …" – или как это называется правильными словами.


Далее. "Антивирус" может работать с самыми разными приложениями. И не всем им можно доверять. Я полагаю, что можно сделать область (область 4, выделенная пунктиром), которая находится под управлением "Антивируса". Там находятся кнопки "Проверить" и результаты проверки.

Вопрос 2. Можно ли сделать так, что "Редактор" не будет знать, что находится в окошке, которое контролируется "Антивирусом"?

Вопрос 3. Можно ли сделать так, что область, выделенная пунктиром, будет перемещаться, при перемещении окна "Редактора" (мышкой), сворачиваться по крестику и правильно перекрываться другими окнами. Пользователь вообще не должен догадываться, что эта область находится под контролем "Антивируса". (В HTML это бы называлось iframe.)


Далее. Результаты анализа (результаты проверки на вирусы) могут храниться в хранилище данных "Антивируса" (5). (Чтобы не проверять файлы на вирусы каждый раз.) Например: хеш файла такой-то – вирусов нет. Эти результаты также являются приватными.

Вопрос 4: где существуют места на жестком диске, где приложение "Антивирус" может устроить свое хранилище, так, чтобы оно было защищено от доступа других приложений? Предполагаю из общих, что на диск С: (где установлена система) или C:/User должны быть регламентированы права доступа приложений. Или как обстоят дела с доступом вообще?

Вопрос 5: Надо ли шифровать данные в хранилище? – чтобы другие приложения не могли прочитать.

Вопрос 6: Могут ли сторонние приложения прочитать результаты анализа, которые сейчас находятся в оперативной памяти "Антивируса"?
Миниатюры
Общая информция: взаимодействие между приложениями  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2014, 13:24
Ответы с готовыми решениями:

Связь между приложениями
Подскажите, пожалуста, как можно с помощью WInAPI функций связывать приложения между собой и заставить обмениваться их данными? то есть...

чат между двумя приложениями
вообщем надо разработать чат работающий между двумя приложениями, у меня в целом это сделать получилось , но у меня обязательно необходимо...

Обмен данными между двумя приложениями
есть 2 приложения. Приложение 1 - Создает Приложение 2 с помощью CreateProcess(); следовательно знает его ThreadId и ProcessId и...

7
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
23.04.2014, 20:09
Цитата Сообщение от AlexLF Посмотреть сообщение
Как можно реализовать доставку пути к файлу, которое передается от приложения "Редактор" к приложению "Антивирус"?
Это называется межпроцессное взаимодействие (Interprocess Communications).
Популярные способы обмена данными: разделяемая память, каналы (pipes),
COM/RPC, файлы/реестр, события...

http://msdn.microsoft.com/en-u... 85%29.aspx

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 2. Можно ли сделать так, что "Редактор" не будет знать, что находится в окошке, которое контролируется "Антивирусом"?
Такая защита доступна на Windows Vista и выше, при условии, что
включен UAC. Каждому процессу присваивается определенный уровень
целостности (integrity level), и процессы с низким IL не могут полноценно
взаимодействовать с процессами с высоким IL.

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 4: где существуют места на жестком диске, где приложение "Антивирус" может устроить свое хранилище, так, чтобы оно было защищено от доступа других приложений? Предполагаю из общих, что на диск С: (где установлена система) или C:/User должны быть регламентированы права доступа приложений. Или как обстоят дела с доступом вообще?
Все это обеспечивается штатными средствами безопасности Windows.
Например, можно создать папку, выставить ей права, разрешающие доступ
только администраторам и системе, и хранить там нужные данные.
Если у пользователя нет администраторских прав, сделать с такой папкой
он ничего не сможет.

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 5: Надо ли шифровать данные в хранилище? – чтобы другие приложения не могли прочитать.
Можно. Но проще воспользоваться встроенными средствами безопасности.
А если так уже хочется шифровать, то лучше снова применять встроенные
средства для этих целей, такие как DPAPI:
http://msdn.microsoft.com/en-u... 95355.aspx

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 6: Могут ли сторонние приложения прочитать результаты анализа, которые сейчас находятся в оперативной памяти "Антивируса"?
И снова это все регулируется средствами безопасности Windows.
Хотя есть некоторые программные интерфейсы для ограничения доступа.
1
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
23.04.2014, 22:38
Есть даже программа про которую вы говорите =) Называется SandBoxie и RedBoxie. Ну естественно, они сделаны только с базовыми основами, сильно "продвинутых" фичей там нет, но как пример сойдут.
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 11
24.04.2014, 00:29  [ТС]
Спасибо, постепенно разбираюсь..

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 4: где существуют места на жестком диске, где приложение "Антивирус" может устроить свое хранилище, так, чтобы оно было защищено от доступа других приложений? Предполагаю из общих, что на диск С: (где установлена система) или C:/User должны быть регламентированы права доступа приложений. Или как обстоят дела с доступом вообще?
Все это обеспечивается штатными средствами безопасности Windows.
Например, можно создать папку, выставить ей права, разрешающие доступ
только администраторам и системе, и хранить там нужные данные.
Если у пользователя нет администраторских прав, сделать с такой папкой
он ничего не сможет.
Что понимается под администратором? 1. Пользователь, то есть мышь и клавиатура? 2. Либо приложение с правами администратора? (Если два эти понятия отличаются. И вообще, может ли приложение отличить сигналы, пришедшие с мыши и клавиатуры, то есть отличить действия человека от действий программы.)

Как называются эти штатные средства безопасности Windows?

Добавлено через 11 минут
Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос 2. Можно ли сделать так, что "Редактор" не будет знать, что находится в окошке, которое контролируется "Антивирусом"?
Такая защита доступна на Windows Vista и выше, при условии, что
включен UAC. Каждому процессу присваивается определенный уровень
целостности (integrity level), и процессы с низким IL не могут полноценно
взаимодействовать с процессами с высоким IL.
По поводу UAC. Насколько понимаю, UAC большинство пользователей отключают. И тогда "Редактор" может читать содержимое пунктирной области.

Вопрос, что UAC делает. Насколько я понял пока, что UAC контролирует "тяжелые" воздействия – изменения настроек, реестр, тому подобное. К считыванию содержимого окна другого приложения он вроде, насколько я пока посмотрел, не имеет отношения.

Добавлено через 4 минуты
Контролирует ли UAC считывание содержимого окна?

Я раньше думал, что поскольку один процесс не имеет доступа к памяти, используемой другим процессом, то он не имеет и доступа к тому, что отображается внутри другого окна. А операционная система управляет перемещением окошек, сворачиванием и их перекрытием. Сейчас уже не знаю, что думать… Если процесс "Редактора" может, по-простому, снять скриншот с экрана (есть же программы, которые снимают скриншоты), то он узнает, что было в окне другого процесса. То есть "Редактор" узнает результаты анализа файлов. А если еще будет запрашивать у "Антивируса" разные файлы (даже с ними не работая), то может выяснять и результаты анализа произвольных файлов.

Добавлено через 3 минуты
Контролирует ли UAC нажатие на кнопку "Проверить"?

Есть еще вариант защиты приватности. Выдавать в пунктирное окно результаты анализа только для тех файлов, для которых пользователь просить их проанализировать. Не кликал – отображать только кнопку "Проверить". Для этого как раз и нужно быть уверенным – что кнопку напротив этого файла нажимал именно пользователь.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
24.04.2014, 00:36
Цитата Сообщение от AlexLF Посмотреть сообщение
постепенно разбираюсь
Перед постами разберитесь лучше, а то ведь через 5 минут поиска вы сами найдёте все ответы =)

Цитата Сообщение от AlexLF Посмотреть сообщение
Что понимается под администратором?
Понимается согласно контексту:
Цитата Сообщение от AlexLF Посмотреть сообщение
Если у пользователя нет администраторских прав
Именно это. "7 раз отмерь" вам урок в жизнь =)

Цитата Сообщение от AlexLF Посмотреть сообщение
может ли приложение отличить сигналы
Я как то недавно эксперементировал(правда на чистом WinApi, не юзаю ugly MFC):
C++
1
2
3
4
5
6
7
8
9
GetWindowRect(hAdm, &subitemrect);
cmx1 = subitemrect.left+77;
cmy1 = subitemrect.top+37;
Sleep(100);
SetCursorPos(cmx1,cmy1);
Sleep(100);
SendMessage(hAdBs, WM_LBUTTONDOWN, 0, 0);
Sleep(200);
SendMessage(hAdBs, WM_LBUTTONUP, 0, 0);
Думаю что данная имитация говорит о том что реального сообщения WM_MOUSEMOVE нет. Хотя возможно я ошибаюсь - ну так вы поэкспереминируйте, может найдёте что то, чего ещё никто не знает - именно так и изобретают что то новое.
0
0 / 0 / 0
Регистрация: 23.04.2014
Сообщений: 11
24.04.2014, 00:46  [ТС]
Я немного разбираюсь в веб-программировании, но не разбираюсь в С++ и WinAPI вообще. Мне нужно понять принципиально, что реализуемо, а что нет.
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
24.04.2014, 00:57
Цитата Сообщение от AlexLF Посмотреть сообщение
не разбираюсь в С++ и WinAPI вообще
Тяжёлый случай. Видимо только учитесь(на начальных курсах?) - тогда перед выполнением данной задачи вам следует разобраться в С++ и WinAPi.
ВСЁ РЕАЛИЗУЕМО! Было бы желание =)
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
25.04.2014, 00:33
Цитата Сообщение от AlexLF Посмотреть сообщение
Что понимается под администратором?
На системах до Windows Vista - процесс или поток, запущенный в контексте пользователя,
являющегося членом группы "Администраторы". На Windows Vista и выше - любой elevated
(т.е. явно запущенный с правами администратора) процесс.

Цитата Сообщение от AlexLF Посмотреть сообщение
И вообще, может ли приложение отличить сигналы, пришедшие с мыши и клавиатуры, то есть отличить действия человека от действий программы.
Стопроцентно надежно - нет. Разве что по каким-то эвристическим признакам -
дрожание указателя мыши, характерные свойства "движения" и т.п.

Цитата Сообщение от AlexLF Посмотреть сообщение
Как называются эти штатные средства безопасности Windows?
Windows Security.
UAC, DACL/SACL, owner-ы, SID-ы, привилегии, access token-ы, integrity level-ы и еще
много всего. Система пронизана этими вещами сверху донизу, называть что-то одно
конкретное нет смысла.

Цитата Сообщение от AlexLF Посмотреть сообщение
По поводу UAC. Насколько понимаю, UAC большинство пользователей отключают. И тогда "Редактор" может читать содержимое пунктирной области.
Именно так. Но это вопрос из разряда "что, если пользователь захочет сам себе
отформатировать диск, смогу ли я ему помешать". По поводу UAC: те, кто отключают его,
сами себе злобные буратины.

Цитата Сообщение от AlexLF Посмотреть сообщение
Вопрос, что UAC делает. Насколько я понял пока, что UAC контролирует "тяжелые" воздействия – изменения настроек, реестр, тому подобное. К считыванию содержимого окна другого приложения он вроде, насколько я пока посмотрел, не имеет отношения.
UAC:

- контролирует, чтобы программы, требующие высоких прав, запускались только с явного
согласия пользователя;

- "маскирует" администраторов под обычных пользователей, чтобы их процессы имели такие же
обрезанные права и не могли ничего натворить в системе, если только пользователь явно
этого не затребует;

- ограничивает отправку оконных сообщений (а также установку оконных перехватчиков) в
процессы, запущенные на более высоком уровне целостности (эта часть UAC называется UIPI -
User Interface Privilege Isolation);

- для обеспечения совместимости со старыми приложениями виртуализирует доступ к некоторым
системным папкам и разделам реестра.

Цитата Сообщение от AlexLF Посмотреть сообщение
Я раньше думал, что поскольку один процесс не имеет доступа к памяти, используемой другим процессом, то он не имеет и доступа к тому, что отображается внутри другого окна.
Все зависит от контекста, в котором запущены процессы.
Если процессы А и Б запущены от имени одного и того же пользователя, или это системные
или запущенные администратором процессы, тогда они легко могут читать и писать в память
друг друга. Во всех других случаях доступа нет, если только один из процессов не
разрешит его явно. Ну или если ситуация, когда системный/админский процесс
выступает инициатором записи или чтения.

Цитата Сообщение от AlexLF Посмотреть сообщение
Если процесс "Редактора" может, по-простому, снять скриншот с экрана (есть же программы, которые снимают скриншоты), то он узнает, что было в окне другого процесса. То есть "Редактор" узнает результаты анализа файлов. А если еще будет запрашивать у "Антивируса" разные файлы (даже с ними не работая), то может выяснять и результаты анализа произвольных файлов.
От скриншота защититься нельзя. Но от "манипуляций" защищаться можно и нужно.

Цитата Сообщение от AlexLF Посмотреть сообщение
Контролирует ли UAC нажатие на кнопку "Проверить"?
Очень много вопросов.
Ответы на них Вы найдете в книгах, статьях и другой литературе по Win32.

Цитата Сообщение от AlexLF Посмотреть сообщение
Есть еще вариант защиты приватности. Выдавать в пунктирное окно результаты анализа только для тех файлов, для которых пользователь просить их проанализировать. Не кликал – отображать только кнопку "Проверить". Для этого как раз и нужно быть уверенным – что кнопку напротив этого файла нажимал именно пользователь.
Вы не о том думаете.
Многие средства безопасности теряют смысл, если используются на уже скомпрометированной,
то есть на зараженной системе. Нельзя пытаться защищаться от всего на свете, нужно
делать некоторые допущения, например что в системе нет троянцев и прочей нечисти, а
максимум, что имеет злоумышленник - запуск процесса в неадминистраторском контексте.
И вот исходя из этих допущений возводить защиту. А противодействие угрозам на
потенциально зараженной системе - это совсем другие подходы и средства (часто вообще
неэффективные, повторю).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2014, 00:33
Помогаю со студенческими работами здесь

Передать строку, между двумя приложениями
Доброе время суток! Помогите, пожалуйста, решить вопрос: необходимо передать строку, между двумя приложениями, используя функции WinAPI...

Взаимодействие между двумя приложениями
Я читал возможные варианты и из того, что нашел, если верно понял не подходит ничего (отрицать не буду, еще не отоспался после сданного...

Взаимодействие между двумя .NET приложениями
Всем доброго дня! Подскажите, что и как лучше использовать для передачи данных между двумя .NET приложениями. Мне необходимо с...

Обмен данных между DOS-приложениями и Windows-приложениями
Как настроить установки Windows 98, чтобы нажатием клавиши PrtSc рисунок, созданный Borland Pascal-программой, скопировался в буфер обмена?...

Взаимодействие с приложениями
Здравствуйте. Хочу сделать программу, которая будет взаимодействовать с разными приложениями. К примеру, уже нашёл, как взаимодействовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru