سؤال

لغرض مراجعة رمز المصدر الموجه نحو الأمان ، أنا مهتم بالعثور على (بشكل شامل) جميع أوامر IOCTL المسجلة في Kernel Linux. أيضًا ، أود تصنيفها إما على أنها متاحة من قبل المسؤولين (مثل الجذر) ، وأيها يمكن الوصول إليها من قبل المستخدمين غير المحظوظين.

لست متأكدًا مما إذا كان من الأسهل قراءة رمز مصدر kernel أو إذا كانت هناك طريقة للاستعلام عن القائمة في مساحة المستخدم. إذا كنت بحاجة إلى النظر في النواة ، فما هي الوظائف التي سأحتاج إلى البحث عنها لتسجيل IOCTLs؟

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

المحلول

لا يتم تسجيل IOCTLS بالفعل في kernel ، كل نوع من الكائنات التي تشبه الملفات لها مجموعة مختلفة من IOCTLs المتاحة.

معظم الوقت يتم تنفيذه باستخدام بيان التبديل.

إذن ما عليك فعله حقًا هو:

  • اكتشف ما هي مجموعة الأجهزة / الملفات ذات الصلة بالأمان-تلك الأجهزة المفتوحة فقط من خلال الجذر لا تحتاج إلى فحص مثل هذا لاستجواب الجذر.
  • معرفة ما تتوفر IOCTLs.

في الممارسة العملية ، فإن اكتشاف IOCTLs متاح هو غير تافهة. تحتوي العديد من الأجهزة على صفحة رجل يسردها ، لكن البعض الآخر لا ، وقد تكون القائمة غير مكتملة.

عادة ما تكون هناك وظيفة في مكان ما مع وضع مفتاح كبير. ومع ذلك ، هناك نوع من "الميراث" حيث تحتوي الكثير من الأجهزة على عدة أنواع مختلفة من IOCTL التي تم تنفيذها على مستويات مختلفة.

عادة ما يتم تنفيذ نفس "نوع" برنامج التشغيل في عدة أنواع مختلفة من الأجهزة ، وغالبًا ما يشتركون في الكثير من التعليمات البرمجية.

على سبيل المثال ، تحتوي المنافذ التسلسلية على محددات IOCTLs الخاصة بها http://lxr.linux.no/#linux+v2.6.35/drivers/serial/serial_core.c#l1107

لكن من المحتمل أيضًا أن تكون المنافذ التسلسلية قد تم تعريف IOCTLs على أساس كل سائق ، ولكن نظرًا لأنها ttys ، فإنها تستجيب أيضًا إلى IOCTLs tty.

إنه منظم بشكل مختلف لكل نظام فرعي لأن لديهم سلوك مختلف.

نصائح أخرى

MAN IOCTL_LIST يعطي أيضًا قائمة أوامر IOCTL STD مع ملاحظة صغيرة وملف رأس مرتبط.

لأجهزة الأحرف ، تحتاج إلى النظر إلى هيكل file_operations. يوجد مؤشر وظيفة في هذا الهيكل يسمى IOCTL والذي يتم استدعاؤه عند الاتصال بـ IOCTL في هذا الجهاز.

لذا فإن القيام بما تريده سيكون صعبًا ، لأن كل جهاز لديه أوامر IOCTL الخاصة به.

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