2010-02-09 12 views
0

J'ai intercepté (interposé) la fonction dlopen sous MacOS X et quelques autres fonctions. Je vois comment mes applications appellent dlopen dans le journal, mais ne trouvent rien qui soit lié aux fonctions d'ouverture/de lecture après que la bibliothèque dynamique ait été ouverte. Comment le système accède et lit le fichier de bibliothèque dynamique? J'ai regardé le code source de dyld, et il appelle open/read sur dlopen. Quelqu'un peut-il me faire savoir ce que je manque? fonctions interceptées: dlopen, ouvrir, lire, écrire, accéder, toutes les fonctions statistiques, fermer, etc[macosx] est-ce que dlopen appelle les fonctions d'ouverture et de lecture?

merci, toute aide est très appréciée.

+0

Comment interceptez-vous? strace? –

+0

non, en utilisant dyld interposant, via la variable d'environnement DYLD_INSERT_LIBRARIES. – zbencik

Répondre

0

Une fois que dlopen() a réussi, alors dlsym() sera typiquement appelé pour rechercher des fonctions etc. dans la bibliothèque.

+0

ouais, je comprends cette partie. La question est de savoir comment le système lit la bibliothèque à partir du système de fichiers. J'ai besoin de charger des bibliothèques d'applications à partir d'un conteneur de stockage spécial. Je vois les appels dlopen sur mes bibliothèques, mais pas de fonctions d'ouverture/lecture – zbencik

+0

Dans ce cas, vous pouvez probablement tirer la source de Darwin et regarder ça, non? http://www.opensource.apple.com/ –