Да, вы можете изменить двоичный файл или даже изменить Info.plist, но, как и изменение двоичного файла, который вы делаете, вам придется делать это снова при каждом обновлении приложения. Нет способа сделать это без изменения приложения таким образом, чтобы оно не было перезаписано при его обновлении.
Вы можете автоматически вносить изменения с помощью Launch Agent.
Сохраните следующее в ~/Library/LaunchAgentsas com.yourname.youragent.plist, затем запустите launchctl load ~/Library/LaunchAgents/com.yourname.youragent.plist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourname.youragent</string>
<key>OnDemand</key>
<true/>
<key>Program</key>
<string>cp</string>
<key>ProgramArguments</key>
<array>
<string>/Users/grgarside/test/MyApp</string>
<string>/Applications/MyApp.app/Contents/MacOS/</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Applications/MyApp.app/Contents/MacOS/MyApp</string>
</array>
</dict>
</plist>
Приведенный выше скрипт будет следить WatchPathsза любыми изменениями (в данном случае это бинарный файл для приложения) и будет запускать cpдля копирования вашего бинарного файла в приложение в / Applications.
/Applicationsменяется? А также запретить любому приложению изменять себя.