Jak skanować w poszukiwaniu opcji aplikacji w OSX

0

Od czasu do czasu widzę poradniki, które pozwalają zmienić funkcjonalność niektórych aplikacji w OSX za pomocą defaultswiersza poleceń. Wiem, że ludzie znajdują te dyrektywy konfiguracyjne poprzez skanowanie aplikacji. Jak to się robi?

fix: mógł przysiąc, że tak option. Mój błąd.

kylehotchkiss
źródło
1
Czy masz na myśli defaults?
Daniel Beck
Czy mówisz o aplikacjach graficznych lub aplikacjach UNIX?
peelman
Graficzny / .app
kylehotchkiss,

Odpowiedzi:

4

Możesz użyć defaultsnie tylko do zmiany tych wartości, ale także do ich spisania.

defaults read -gpokaż opcje „globalne”, jednocześnie defaults read com.company.ProgramNamepokazując wartości domyślne (tj. opcje konfiguracji) dla konkretnego programu. W tym kontekście com.company.ProgramNamejest identyfikatorem pakietu programu, np . com.apple.TextEditLub com.culturedcode.Things. Więcej na ten temat .


Na przykład uruchom, defaults read com.apple.Findera znajdziesz linię, która mówi AppleShowAllFiles = FALSElub coś podobnego. Teraz bądź odważny, uruchom defaults write com.apple.Finder AppleShowAllFiles -boolean TRUEi uruchom ponownie Findera, aby zobaczyć, co się stanie.

Aby uzyskać więcej informacji na temat korzystania defaults, wejdź, man defaultsaby wyświetlić jego dokumentację. Może stać się dość skomplikowany, a niektóre rzeczy związane z listami i słownikami są praktycznie niemożliwe. Gdy dotrzesz tak daleko, spójrz w górę /usr/libexec/PlistBuddy- istnieje kilka przykładów użycia go na tej stronie, wystarczy użyć funkcji wyszukiwania.


Znajdź identyfikator pakietu określonego programu :

Aby dowiedzieć się, z czego korzysta aplikacja w com.vendor.yourapp , kliknij prawym przyciskiem myszy pakiet aplikacji, wybierz Pokaż zawartość pakietu , przejdź do Spis treści , otwórz Info.plist za pomocą edytora tekstu lub lepiej edytora listy właściwości, takiego jak Edytor listy właściwości lub Xcode 4 (obie części narzędzi programistycznych Apple) i poszukaj CFBundleIdentifier lub podobnego.


Innym narzędziem, którego możesz użyć, jest strings. Wyświetli wszystkie ciągi znaków (tzn. Prawdopodobnie przydatne sekwencje znaków) w pliku binarnym. Zauważ, że daje to mnóstwo fałszywie dodatnich wyników, ponieważ wyświetlane są również wywołania funkcji celu C, a także zwykłe dane wyjściowe wyświetlane w interfejsie użytkownika.


Secrets oferuje także bazę danych ukrytych ustawień dla OS X, posortowaną według aplikacji. Można je zmienić za pomocą defaults. Dla Twojej wygody możesz również pobrać okienko preferencji ze strony internetowej, które pozwala zmienić je w Preferencjach systemowych.

Daniel Beck
źródło
1
#!/bin/sh

# find key names in ~/Library/Preferences/`osascript -e 'id of app "iTunes"'`.plist
defaults read com.apple.iTunes | ruby -e 'puts STDIN.read.scan(/^    \"?([a-zA-Z_.\-]+?)\"? /)' > keys.txt

# extract identifiers from a binary
# (the output is tens of thousands of lines even after grepping)
strings - /Applications/iTunes.app/Contents/MacOS/iTunes | egrep "^[a-zA-Z][a-zA-Z_.\-]{7,}$" | ruby -e 'puts STDIN.read.split("\n").uniq' > strings.txt

# the identifiers for preferences often appear near each other
for x in `cat /0/keys.txt`; do
    grep -C 10 "$x" strings.txt
done | ruby -e 'puts STDIN.read.split("\n").uniq' > strings2.txt

Inna metoda wykorzystująca debuger GNU: arcticmac.home.comcast.net/~arcticmac/tutorials/gdbFindingPrefs.html

Lri
źródło