رصد نشاط نظام الملفات لعملية الطفل على نظام التشغيل X مع امتيازات المستخدم العادية
-
18-09-2019 - |
سؤال
تفرخ عملية طبية وتحتاج إلى معرفة الملفات التي تعدلها أو تخلقها أو حذفها.
لا أستطيع استخدام DTRACE لأنني لا أستطيع سودو.
لا يمكنني استخدام FSEvents لأنها تقارير التعديلات التي تحدث لجميع العمليات على النظام وأنا مهتم فقط بعملية طفلي.
المحلول
أود استكشاف باستخدام DYLD_INSERT_LIBRARIES
(ما يعادل نظام التشغيل Mac LD_PRELOAD
) التخلي عن روتين المراقبة الخاصة بك لإجراءات الروتينيات LIBC أو يدعو النظام الذي تهتم به. على سبيل المثال، يمكنك كتابة my_open()
الروتين الذي يفعل مهما كان التتبع الذي تهتم به، ثم يستدعي LIBC الحقيقي open()
للقيام بقية العمل. ستحتاج إلى القيام بذلك لجميع المكالمات المتعلقة بنظام الملفات التي تريد فخها (فتح، إغلاق، وقراءة، وكتابة، وإعادة تسمية، وما إلى ذلك) يجب أن تكون قادرا على إعداد DYLD_INSERT_LIBRARIES
متغير البيئة قبل أن تفرخ عملية طفلك، دون الحاجة إلى أن تكون الجذر.
هناك مزيد من المعلومات حول هذا الموضوع، ومثال، في الفصل 2 من "Mac OS X Internals: نهج الأنظمة" من قبل Amit Singh. إذا لم يكن لديك نسخة، يمكنك قراءة القسم ذي الصلة كتب جوجل.