مدونة

9 مارس 2017

تطوير البرمجيات: ما هو هوك؟

/
أرسلت بواسطة

تطوير البرمجيات: ما هو هوك؟

يجب أن نعرف عن أنواع قليلة من هوك.

ما هو هوك؟في تطوير البرمجيات ، Hooking هي فكرة تسمح بتغيير سلوك البرنامج. يوفر لك رمز الاحتمال تغيير أول سلوك لشيء ما دون تغيير الكود الخاص بفئة المقارنة. يتم الانتهاء من ذلك عن طريق الكتابة فوق استراتيجيات هوك.

هذا النوع من الاستخدام مفيد للغاية بسبب إضافة وظائف جديدة إلى التطبيقات ، بالإضافة إلى تشجيع المراسلات بين الإجراءات البديلة ورسائل النظام. تميل الخطافات إلى تقليل تنفيذ النظام من خلال توسيع التحميل التحضيري الذي يحتاج النظام إلى تنفيذه لكل رسالة. يجب تقديمها فقط عند الحاجة ويتم إخلاؤها في أقرب فرصة ممكنة.

تصور أنك تستخدم نظام إدارة العملاء (CMS) من جهة خارجية وقد ترغب في تحذير مدير تنفيذي كبير عبر البريد الإلكتروني في كل مرة يتم فيها توزيع مشاركة أخرى وأن هذا السلوك ليس هو الجهاز الافتراضي. سيكون هناك مساران للأمام:

تغيير كود مصدر CMS ليس فكرة ذكية ، بعد كل شيء في التحديث التالي للجهاز سوف تواجه صعوبة فقدان التغيير أو لا تملك القدرة على مواصلة كل شيء منتعش ؛

  • جعل CMS الخاصة بك هي فكرة رهيبة أخرى ، كل شيء مدروس ، ليس لديك ما يكفي من الطاقة أو الأصول بما يكفي لصنع أشياء جديدة أو حتى متابعة ما يتم تصنيعه.
  • استكشاف إمكانية استخدام خطاف ، وهذا هو ، معرفة ما إذا كان CMS ينظر في وحدات أو وحدات خارجية للعناصر من اسم عرض يتم تنفيذه في الدقيقة المشتهرة ، لهذا الموقف ، وتوزيع المشاركات الجديدة.
  • يتقلب الجزء السفلي من الأرض من استخدام الخطافات بشكل عام من جهاز لآخر. موقف مواتية مبدأ من هوكس ليس لتغيير الرمز الأول. في جميع أدلة الممارسات العظيمة لجميع أجهزة المصدر المفتوح التي تحتوي على تحديثات متقطعة ، فإن المانترا التي تعيد نفسها لا تغير المركز. بصرف النظر عن جعل عمليات التحديث لا يمكن تصورها ، لن يفكر أي شخص يأتي في وقت لاحق للقيام بأعمال الصيانة في التغيير ، والشخص الذي نادرا ما يناقشها هو أنت وليس الجهاز.

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

حلول تقنية مبتكرة تقدم التدريب على تطوير البرمجيات في جورجاون ، دلهي NCR في الهند.

السنانير وأنماط التصميم

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

الآخرين في كلا المثالين من التوحيد وتطوير القسم: أسلوب القالب وجسر.

يتم توصيل علم الدلالة بشكل عادي في اسم تقنية الخطاف (على سبيل المثال ، في الأمر ، يطلق على الإستراتيجية التنفيذ ()).

الجدول الافتراضي للطريقة

تطوير البرامج - ما هي تقنيات 1Virtual Point-Hook التي يتم جلبها بطريقة لا يمكن تمييزها من الاستراتيجيات الثابتة ، ولكن بما أنه يمكن تغيير التقنيات الافتراضية ، فإن المجمع لا يعرف عنوان سعة افتراضية معينة عند تسميتها في شفرتك. وبالتالي ، يقوم المترجم بتجميع جدول الطريقة الافتراضية (VMT) ، والذي يوفر طريقة للتحقيق في عناوين القدرات في وقت التشغيل. يتم تنشيط كل استراتيجية افتراضية في وقت التشغيل من خلال VMT. يحتوي VMT للسؤال على جميع الاستراتيجيات الافتراضية لسلائفها ، بالإضافة إلى تلك التي تعلن عنها. لذلك ، تستخدم التقنيات الافتراضية ذاكرة أكثر من استراتيجيات العناصر ، على الرغم من حقيقة أنها تعمل بسرعة أكبر.

نظرًا لأن VMT عبارة عن جدول يحتوي على المؤشرات التي تحتوي على عناوين ذاكرة لسعات الواجهة ، ما يجب فعله هو استبدال عنوان الذاكرة الأول بعنوان عنوان ربط شرعي. على طول هذه الخطوط ، ستتم الكتابة فوق التقنية المسماة ، وسيتم تنفيذ التصرف المرغوب الجديد للسعة.

اطلب واجهة برمجة التطبيقات

تطوير البرمجيات - ما هو هوك - نقطة 2 يسمح إجراء Hooking API حقا لإعادة اختراع عناصر نظام العمل. مع القدرة على التقاط مثل هذه الرسوم ، يمكنك تغيير معالمها من خلال تغيير النشاط الذي سيتم تنفيذه في البداية.

يمكن تصور ، على سبيل المثال ، إلغاء تسجيل سجل معين ، والحفاظ على تشغيل التطبيق ، وطلب تأكيد العميل على حفظ أرشيف إلى الدائرة ، وما إلى ذلك.

في الواقع ، فإن أعظم قطع القرار هو في مجال الأمن ، على سبيل المثال ، مكافحة الفيروسات ومكافحة التجسس. كن على هذا النحو ، هناك ظروف في تطورنا العادي حيث يمكن أن يكون Hooking API ، مخرجًا رئيسيًا.

واجهة برمجة يعني ضمناً ، في ظرفنا المحدد ، الحصول على API من نظام التشغيل ، أو من أي DLL ، وتغيير التنفيذ المعتاد إلى مكان آخر ، وبشكل أكثر تحديدًا ، إلى سعة أخرى. هناك نهجين أساسيين:

EAT و IAT: يحتوي كل EXE / DLL على API لاستيراد وتحرير الجداول. تحتوي هذه الجداول على مؤشرات تعرض نقطة دخول API. عن طريق تغيير هذه المؤشرات ، مما يجعلها تشير إلى معاودة الاتصال ، لدينا خطاف. كن على ما يرام ، إذا كان EXE / DLL هذا لا يقوم باستيراد API ، فلن تعمل هذه الإستراتيجية ؛

الكتابة المباشرة للاكتتاب: كما ذكرنا سابقًا ، في حالة ما إذا كان من الممكن إضافة مكالمة إلى معاودة الاتصال الخاصة بنا نحو بدء شفرة API ، يمكننا "ربطها" ، مما يجعل قدرتنا تعمل في أي نقطة كانت تسمى API. إذا كان الأمر كذلك ، فهناك مشكلة: إذا كان قد تم التعامل مع رمزنا ، فإننا نحتاج إلى استدعاء أول واجهة برمجة تطبيقات ، وسنعاود الاتصال بنا مرة أخرى ، وسيتم إنشاء طوفان مكدس. ترتيب واحد هو إصلاح الخطاف ليكون لديه القدرة على استدعاء API ، وإعادة تجربته بمجرد تنفيذه. كن على هذا النحو ، في وسط هذا المركز ، يمكن إجراء عدد قليل من مكالمات واجهة برمجة التطبيقات ولن يؤدي إلى تنفيذ الاستدعاء ؛

Inline Hook هي النقطة التي نحصل فيها على المبادئ التوجيهية الأساسية لقدرة ، ونحن نتاجر في Jump ، Push أو Call من أجل قدرتنا.

قراءة موصى بها: يعمل نظام التشغيل Windows بشكل إضافي على دعم واجهة برمجة التطبيقات. يجب أن نعرف كيفية عمل واجهات برمجة تطبيقات Windows API؟

المناسبة

تطوير البرمجيات - ما هو ربط هوك - نقطة 3As ربط تقنيات فصل واجهات مستقرة وإجراء مجموعة متنوعة من الفضاء التي يمكن أن تنشأ من إنشاء تطبيق لبيئة معينة يحدث انعكاس السيطرة. كائنات معالجات الأحداث تعديل خطوات التحضير. في نهاية اليوم ، عندما تحدث إحدى المناسبات ، يستجيب المعالج لاستراتيجيات الخطاف المستحسنة على كائنات تم تسجيلها مسبقًا وتنفذ أنشطة خاصة لإعداد المناسبات. حالات المناسبات: رسائل النوافذ ، حزم الهبوط من موانئ المراسلات.

داخل IAT Hooking

تطوير البرامج - ما هي عملية ربط - نقطة 4Each في Windows تحتوي على جدول يسمى Import Address Table (IAT) ، الذي يخزن المؤشرات إلى السعات المرسلة بواسطة DLLs لكل إجراء. يتم تعبئة هذا الجدول بالتدريج مع عنوان عناصر DLL في وقت التشغيل.

باستخدام قدرات معينة ، يمكننا جعل جدول IAT قابل للكتابة ، بحيث يمكن تغيير عنوانه عن طريق عنوان قدرة مخصصة ، معادًا الإشارة إلى الجدول على أنه قرأ ببساطة بعد هذا التغيير. عند النقطة التي يحاول الإجراء استدعاء السعة ، يتم الحصول على عنوانها في جدول IAT ، ويتم إرجاع المؤشر. نظرًا لتغيير جدول IAT ، يتم إنشاء السعة المخصصة التي تم إعدادها من السعة الأولى ويتم الحصول على الشفرة التي يتم إدخالها في الإجراء.

Netfilter Hook

تطوير البرامج - ما هو الخطاف - نقطة 5Netfilter هو نظام فرعي لنظام لينكس أكثر جديرة بالاهتمام من 2.4. هو المسؤول عن حزمة فصل ، NAT ، وجدار الحماية ، وإعادة التوجيه ، من بين أمور أخرى. Netfilter قابل للتوسعة بشكل استثنائى ، وانتهى توثيقها. فإنه يترك احتمالية استخدام الخطافات في رمز Kernel ، مما يجعل استخدامه مرنًا للغاية ويتم استلامه بشكل عام من قبل المجموعة. ترك هذه الخطافات بضعة نتائج يمكن تصورها ويمكن أن تملأ كمحفزات لمناسبات محددة.

استنتاج:

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

GTranslate Your license is inactive or expired, please subscribe again!