Предложение Эрика о system_profiler
(и лежащее в его основе, но недокументированном SystemProfiler.framework) - ваша лучшая надежда. Ваше основное требование невозможно, и любое решение без поддержки оборудования будет довольно быстро взломано. Но вы можете создать разумный уровень запутывания, используя system_profiler
и / или SystemProfiler.framework.
Я не уверен, что ваши реальные требования здесь, но эти сообщения могут быть полезны:
Я повторю здесь то, что я сказал в первом сообщении: невозможно, точка, невозможно гарантировать, что только ваш клиент может общаться с вашим сервером. Если это ваше основное требование, это не решаемая проблема. Я буду расширять это, говоря, что невозможно построить вашу программу так, чтобы люди не могли вынести чек, который вы вставили, поэтому, если целью является лицензирование, это также не является полностью решаемой проблемой. Во втором посте выше обсуждается, как думать об этой проблеме, с точки зрения бизнеса, а не инженерии.
РЕДАКТИРОВАТЬ: Что касается вашего запроса на перезагрузку, помните, что Mac OS X имеет расширения ядра. Загружая расширение ядра, всегда можно изменить то, как система видит себя во время выполнения без перезагрузки. В принципе, это будет руткит Mac, который в принципе не более сложен, чем руткит Linux. Вам нужно тщательно продумать, кто ваш злоумышленник, но если ваши злоумышленники включают хакеров ядра Mac (что не является незначительной группой), то даже требование перезагрузки не представляется возможным. Это не значит, что спуфинг не может раздражать большинство пользователей. Это всегда возможно достаточно компетентным злоумышленником. Это верно для всех современных ОС; Здесь нет ничего особенного в Mac.