Non ho capito molto, ma una volta recuperato lo SharedObject remoto ne prendi i dati così:

codice:
pippo_so = SharedObject.getRemote("pippo_so",conn.uri,false);
pippo_so.connect(conn);
....

trace(pippo_so.data.name);
Per quanto riguarda il gestore di evento "onSync", funziona così:

codice:
shared_so = SharedObject.getRemote("nome_sharedobject", connessione.uri, false);
shared_so.onSync = function(updatedList)
{
	/*
	updateList è un array di oggetti. ciascun oggetto
	contiene tre proprietà: name, code, e oldValue.
	"name" è il nome della proprietà modificata dello 
	SharedObject remoto, "code" è un codice descrittivo
	della modifica, e "oldValue" è ovviamente il valore
	precedente
	*/
	
	// cicli attraverso tutti gli oggetti della lista
	for(var i = 0; i < updatedList.length; i++){
		// tracci il valore
		trace(this.data[updatedList[i].name]);
		// valuti la proprietà "code" dell'oggetto
		switch(updatedList[i].code)
		{
			case "clear":
				// ti sei connesso allo sharedobject per la prima volta
				break;
			case "delete":
				// lo sharedobject è stato rimosso
				break;
			case "change":
				// la proprietà è stata aggiornata
				break;
			case "reject":
				// hai cercato di aggiornare la proprietà in remoto
				// e l'aggiornamento è stato rifiutato
				break;
			case "success":
				// hai cercato di aggiornare la proprietà in remoto
				// e l'aggiornamento è andato a buon fine
				break;
		}
	}
}
shared_so.connect(connessione);