Как вы упоминаете, все эти вещи могут быть довольно легко подделаны.Написав продукт, который в точности соответствует тому, что вы описываете профессионально, решение относительно простое: отследить каждую версию каждого популярного приложения в огромной базе данных, а затем отследить каждое обнаруженное на компьютере приложение и найти их в своей базе данных.Когда вы обнаружите приложение, которое вы никогда раньше не видели, пометьте его для добавления в вашу базу данных.
Поддержание этой базы данных очень велико и требует постоянных усилий.Вот где большая часть стоимости продукта.Код агента не так сложен.Современная база данных - это то, за что платят клиенты.Это довольно трудное место.
Вы правы в том, что вы можете проверить подписи, чтобы убедиться, что вещи, загруженные из MAS или части ОС, являются такими, какими они себя считают.Это поможет вам начать, но этого недостаточно;Просто так много, что не исходит от MAS.
Другая головная боль в том, что вы можете видеть, какие «приложения» в настоящее время работают в NSWorkspace, но это довольно грязно, что это значит.Множество вещей, которые вы не считаете «приложениями», обнаруживаются в запущенных приложениях, например MobileDeviceUpdater и nbagent.С другой стороны, такие вещи, как MySQL не являются.Отпечатки пальцев при запуске приложения могут пропустить вещи, которых нет в этом списке, или вредоносные приложения могут лгать о своем пути к пакетам, чтобы выглядеть законно.Вы можете использовать такие инструменты, как lsof
, чтобы увидеть, какие файлы действительно открыт у процесса , но он становится все более и более сложным.
Удачи;это глубокая кроличья нора с десятками угловых коробок и очень небольшим количеством документации.