Safari: utilizzo di dtrace per investigare su iCloud Tab Sync

2

Sto indagando su come Safari sincronizza le schede tramite iCloud.

Per iniziare, voglio davvero sapere come Safari sta aggiornando il suo elenco condiviso di schede, che significa monitorarlo o un demone di sfondo per le creazioni e le modifiche dei file. (La mia ipotesi è: quando apro una nuova scheda sul mio telefono, iCloud invia una push al mio Mac che aggiorna l'elenco di "iCloud Tabs" di Safari.)

Sto cercando di utilizzare dtrace per monitorare il file di Safari che si apre, con qualcosa di semplice come:

sudo dtrace -n 'syscall::open*:entry /execname == "Safari"/ { printf ("%s", copyinstr(arg0)); }'

ma dtrace stampa questo errore:

dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #1 at DIF offset 24

(Questo è lo stesso errore come qualcuno ha chiesto sui forum di Apple )

Debug di uno strano problema di permessi di iTunes con DTrace aveva informazioni su un problema simile con iTunes, ma non capisco cosa backflip hanno eseguito in gdb per ottenere iTunes come dtrace -able.

  1. Qualcuno può aiutarmi a capire Debug di uno strano Problema delle autorizzazioni di iTunes con DTrace : qual è l'errore causato da e qual è la risoluzione?
  2. Hai altre conoscenze / informazioni sulla sincronizzazione di iCloud Tab? Quale processo li sincronizza? Dove sono memorizzati su disco?
posta cbowns 26.03.2016 - 16:17
fonte

1 risposta

0

Il file che contiene le schede di iCloud è:

~/Library/SyncedPreferences/com.apple.Safari.plist

È un file binario, quindi puoi usare plutil per convertire una copia in JSON / XML per l'elaborazione. Mi aspettavo che la sincronizzazione fosse tramite bird , ma un po 'di luce spelunking con brctl log -w e altri ficcanaso della luce non riflettono le modifiche apportate al database delle schede. Ci sono alcuni bei progetti su github che analizzano questo file in python , JS e una bella app della barra dei menu:

Sapere dove i dati persistono sul disco mostra che syncdefaultsd è il processo proprietario:

sudo fsusage -w | grep com.apple.Safari

Purtroppo, la struttura e il daemon privati sono fondamentalmente non documentati da Apple, tranne per ciò che è possibile ricavare da launchd plist per il servizio.

    
risposta data 26.03.2016 - 23:27
fonte

Leggi altre domande sui tag