سؤال

ولدي الصغير تطبيق سطر الأوامر المكتوبة في C التي تقوم بدور المجمع / قاذفة للبرامج الأخرى (فكر xargs). يتم كتابة التطبيق لتجميع على فري / لينكس (عبر شوكة () / إكسيك ()) ويندوز (CreateProcess ()). بالإضافة إلى كونها قادرة على اعتراض، حقن، أو التعامل مع وسائط سطر الأوامر لتطبيق طفل، وأنا أتساءل عما إذا كان هناك طريقة سهلة لاعتراض النشاط الملفات برنامج الطفل (أو انها الأطفال، وهكذا دواليك). أنا مهتم أساسا في مجرد أسماء الوصول للقراءة أو الكتابة، ولكن ألم يقل محتويات الملفات، وأود اعتراض أن تكون خفيفة الوزن قدر الإمكان.

في غوغلينغ بعض الكلمات الرئيسية ذات الصلة من أعلاه، يبدو أن هناك العديد من الطرق للقيام بذلك في Win32. من ملف تصفية نظام السائقين إلى العبث رؤوس الجدول PE الاستيراد. أيا من هذه تبدو تافهة أو شيء يمكن أن تحتوي على الذات في تنفيذ برنامجي المجمع (مثل معظم سيتطلب دلس إضافية أو ملفات برنامج التشغيل إلى جانب تنفيذ الرئيسي.) أيضا، أود هذا العمل على نظام التشغيل Windows XP إلى 7، إن أمكن ، دون الحاجة إلى الإختراق حول UAC أو غيرها من دلتا منصة. انها عملية طفلي، لذلك أنا أحسب أنني يجب أن تكون قادرة على رصد آمن نشاطها:)

في لينكس، وهناك inotify ()، ولكنها تراقب وصول الملفات العام دون النظر إلى وفاق فقط عملية بلدي الأطفال /. نفس الشيء ينطبق على kqueue فري ل(). هذه كسر أيضا بانخفاض في حالات SMP حيث مثيلات متعددة من المجمع قد تكون قيد التشغيل برامج مختلفة، ولكل حاجة إلى إزالة الغموض النشاط الملفات الطفل الخاصة من بعضها البعض.

وكنت بالتأكيد نقدر أي اقتراحات بأن المجتمع SO قد يكون لهذا العرض.

هل كانت مفيدة؟

المحلول

وكتابة مكتبة "المتدخل" أن السنانير متغير البيئة LD_PRELOAD FOPEN ووضع لجميع العمليات التابعة. هذا وتعمل مع مكتبات المرتبطة حيوي أنت.

ومثال على كيفية القيام بذلك يمكن العثور عليها هنا: HTTP: // المطورين. sun.com/solaris/articles/lib_interposers.html و http://lists.debian.org/debian-powerpc/2004/11/msg00039.html يظهر التنفيذ الجزئي لFOPEN المتدخل () ..

نصائح أخرى

والاقتراح الوحيد الذي أود الإدلاء استخدام strace (المكالمات نظام التتبع وإشارات)، رغم أن هذا هو أكثر من أداة تصحيح، ولا يؤثر على أداء العملية التي تتبع

strace -f -e trace=file -o <output-file> <cmd-line>

-f - follow forks
-e trace=file - will output system calls related to the file-system
-o <output-file>

وIMHO - إذا كنت على دراية strace، هو دائما أداة مفيدة لديك في ترسانة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top