مكون مكونات توقيع IDA Pro المحسّن.
نسخ IDA_SigMaker32.dLL و IDA_SigMaker64.dLL إلى دليل plugins IDA الخاصة بك.
المفتاح الساخن IDA الافتراضي هو "Ctrl-alt-S" ، ولكن يمكن ضبطه على آخر باستخدام مفتاح IDA "Plugins.cfg". نظرًا لأن "ctrl-alt-s" يتعارض الآن مع الافتراضي IDA ، لتجنب الحصول على رسائل تحذير ، قم بتحرير "idagui.cfg" وجعل إدخال "stacktrace" مثل: "StackTrace" = 0 // "Ctrl-Alt-S" // open stack trace window
يتطلب IDA Pro الإصدار 7.6'ish.
استدعاء المكون الإضافي عبر مفتاح Hotkey أو عبر قائمة IDA Edit/Plugin.

هناك ثلاث عمليات توليد توقيع:
الوظيفة : تستخدم لإنشاء نقطة إدخال فريدة من نوعها ، أو توقيع دالة الحد الأدنى مع الإزاحة ، أو توقيع الجسم بالكامل اعتمادًا على تكوين الخيارات (انظر أدناه).
أولا حدد أي عنوان داخل الوظيفة الهدف. إذا لم تكن الوظيفة المحددة فريدة من نوعها (بالنسبة لنقطة الدخول ، أو الخيار الحد الأدنى) ، فسيتم محاولة توقيع لفحص فريد من نوعه.
حالات الاستخدام النموذجية: التوقيعات لتحديد الوظائف في وقت التشغيل في الذاكرة المستهدفة ، لتحديد وظائف في IDA بعد التحديثات القابلة للتنفيذ ، أو للمساعدة في تحديد موقع المكتبات المعروفة عن طريق التوقيع ، إلخ.
مثال على الإخراج التوقيع: 
يتم دفع نتائج التوقيع إلى حافظة Windows لسهولة لصق Ctrl+V في رمز المصدر ، إلخ.

تنسيق الإخراج: IDA : تنسيق البحث الثنائي HEX الافتراضي الذي يدعم IDA وبعض الأدوات الأخرى ، باستخدام بايت Hex المتباعد و "؟؟" أحرف البرية. مثال: C1 6C E8 ?? ?? ?? ?? 8B 50 08 نمط الكود : سلسلة سداسية ترميز الهروب وسلسلة قناع منفصلة حيث "X" هي بايت حارس ، و "؟" هي بايت البايت. مثال: " xc1 x6c xe8 xcc xcc xcc xcc x8b x50 x08 " "xC1x6CxE8xCCxCCxCCxCCx8Bx50x08", "xxx????xxx" مثال: {0xC1,0x6C,0xE8,0xAE,0xAE,0xAE,0xAE,0x8B,0x50,0x08}; استخدم مربع تحرير "Mask Byte" لتغيير القناع الافتراضي "Byte". بايت القناع الافتراضي هو 0xAE ، أحد بايتات التعليمات البرمجية الأقل استخدامًا (انظر "Beale Mask Byte" أدناه).
معايير توقيع توقيع "الوظيفة". نقطة الدخول : ستحاول إنشاء الحد الأدنى من توقيع نقطة إدخال الوظيفة بحجم البايت عند الإمكان. الحد الأدنى من حجم البايت : سيحاول توليد الحد الأدنى ، مع عدد أقل من العدد البري ، بحجم البايت (خمسة هي أكبر) توقيع تعليمات محاذاة داخل هيئة الوظيفة المحددة. جسم الوظيفة الكامل : سيحاول توليد توقيع فريد من نوعه للوظيفة الكاملة.
بالنسبة لأي من هذه الخيارات الثلاثة ، إذا لم تكن الوظيفة فريدة من نوعها ، فسيتم إجراء محاولة لتحديد أصغر توقيع فريد من نوعه عبر المرجع بدلاً من ذلك. إذا كنت ترغب في إنشاء توقيع دالة كاملة أو جزئية لوظيفة غير متوفرة ، فاستخدم خيار "نطاق العنوان" بدلاً من ذلك.
مستوى الرسالة : اضبط على "مطول" لإخراج رسالة توقيع التوقيع الداخلي إلى نافذة سجل IDA.
REFs Max Function Scan : حدد عدد المراجع المتقاطعة للبحث عند البحث عندما لا يمكن العثور على توقيع الإجراء المباشر "دالة". عادةً ما يكون هذا "0" للبحث غير المحدود ، ولكن بالنسبة لحالات المشكلات التي توجد فيها العديد من المراجع التي تسبب تباطؤًا ، يمكن ضبط ذلك على حد معقول مثل 16 أو 100 لزيادة سرعة المسح.
بالنسبة للحالة النادرة نسبيًا للوظائف التي تنتشر قطعها على نطاقات عناوين متعددة ، ستحاول الأداة استخدام الجزء الأول فقط. إذا كنت ترغب في تقديم توقيع في إحدى القطع المفككة ، فحاول استخدام طريقة "AT Address". إذا فشل كل شيء آخر ، جرب SIG "من نطاق العنوان" (والذي قد يأخذ بعض البحث اليدوي عن التفرد).
Max Function Point Point Bytes : عند استخدام خيار "الوظيفة" ، ويتم تكوين معايير "نقطة الإدخال" ، مما يحد اختياريًا من الحد الأقصى لحجم بايت نقطة الإدخال. الافتراضي هو "0" ، بالنسبة إلى غير محدود (والذي يمكن أن يصل إلى حجم بايت جسم الوظيفة المحدد بالكامل). إذا تم تجاوز هذا الحد ، فسيتم البحث عن توقيع المرجع المتبادل بدلاً من ذلك.
تعيين إلى حد عملي مثل "16" أو "32" ، لتوقيع XREF الأصغر عادةً مقابل توقيعات نقاط الدخول الكبيرة جدًا.
يقوم Sigmakerex ("EX") بإنشاء توقيعات وظائف أصغر وأكثر تشددًا باستخدام تحليل تعليمات أفضل. مثال: Sigmaker ("SM") Wildcards بايت المعامل من التعليمات sub esp, 90h (مثل "81 EC ?? ?? ?? ?? ) ، رمي البايتات الأربعة الأخيرة بشكل غير ضروري. بينما يرى Ex كقيمة فورية ويحتفظ بتسلسل 81 EC 90 00 00 00 بالكامل.
تركز EX بشكل أفضل على حالات استخدام توقيع الجسم المعيارية. ل SM هناك خيار واحد فقط يمكن التحكم فيه. سيحاول إنشاء توقيع فريد في أي مكان تحدده في الوظيفة. إذا لم تتمكن من العثور على واحدة هناك ، فسيبحث عن سيج فريد من نوعه بدلاً من ذلك فقط. بالنسبة لـ EX ، نظرًا لأن حالة الاستخدام النموذجية المحددة هي تحديد نقاط إدخال الوظائف ، سيتم إنشاء أصغر توقيع نقطة دخول عند تكوين خيار معايير "نقطة الدخول". عندما يتم تحديد خيار "الحد الأدنى من حجم البايت" ، سيبحث عن أصغر وأقل عدد من العدسات البرية في العدد الفريد (من خمسة بايتات على الأقل) داخل جسم الوظيفة بأكمله.
يحتوي SM على المزيد من التحكم في معايير الإخراج على عدد البايت مقابل العد البري ، وما إلى ذلك ، في مربع حوار خياراته. يفترض Ex أنك تريد أفضل ما في كلتا الحالتين (أقل من أحرف البرية وأصغر حجم البايت).
EX تغفل وظيفة "التحويل" والفرد "البحث" التي تفضلها SM على تفضيل لواجهة مستخدم أبسط وأقل تشوشًا.
للبحث ، نظرًا لأن Ex تنبعث دائمًا من إخراج تنسيق IDA بالإضافة إلى توقيعات تنسيق الإخراج المحددة ، استخدم خيار البحث الثنائي IDA مع سلسلة IDA SIG.
يكون Ex بشكل عام أسرع بشكل عام ، حتى عند إجراء عمليات تفتيش أكثر شمولاً ، بسبب تقنية استنساخ IDB في ذاكرة الوصول العشوائي واستخدام الماسح الضوئي المحسّن AVX2 مقابل الاعتماد على دالة IDA البطيئة للمسح الضوئي.
في مشاريعي الخاصة لإيجاد الأنماط ديناميكيًا ، أفضل تنسيق "البايت المضمن" (لعدم وجود اسم أفضل). إنه أبسط وأكثرها دمجًا ، ولا يتطلب تحويل وقت التشغيل من سلسلة Hex ASCII. لقد استخدمت هذا التنسيق للعديد من المشاريع ولم أواجه بعد أي تصادم توقيع أو مشاكل مطابقة زائدة عن الحاجة.
لتقليل مشكلات التكرار المحتملة ، من الحكمة استخدام واحدة من أقل قيم بايت رمز استخدام لبايت البود/القناع. للعثور على المرشحين المثاليين ، قمت بجمع تردد بايت الكود من ثلاثة كل جزء كبير من كود 32 بت و 64 بت ، ثم جدولة النتائج وفرزها. يتم استخدام برنامج "ida_get_byte_frequency.py". يقوم البرنامج النصي "byte_frequency_tabulate.py.py" وفرز بترتيب تصاعدي مجموعة من هذه JSON DBS المحفوظة. من الواضح أن تردد البايت لـ 32bit ليس هو نفسه 64 بت واحد وتجولت بشكل مستقل. انظر "32bit.txt" و "64bit.txt". في الارتباط البصري للاثنين ، 0xa2 هو في الواقع أقل مقاسم شيوع ، ثم يليه 0xae. تم اختيار 0xae أكثر من 0xa2 باعتباره بايت القناع الافتراضي منذ أن أسهل في اختياره في Hex بصريًا.
تم تصميمه باستخدام Visual Studio 2019 ، على Windows 10 ، مع التبعية الوحيدة هي IDA Pro C/C ++ SDK الرسمية. الإعداد في ملف المشروع ، يبحث عن متغير البيئة _IDADIR الذي يتوقع منه العثور على مجلد "IDASDK/include" ومجلد "IDASDK/LIB" حيث يوجد IDA SDK. عدم استخدام IDADIR لأن IDA يبحث عنه نفسه ويمكن أن يتسبب في تعارض إذا حاولت استخدام أكثر من إصدار IDA مثبت.
Python 3.7'ish أو من الأفضل تشغيل البرنامج النصي "byte_frequency_tabulate.py".
بفضل منشئ أداة Sigmaker الأصلية من Gamedeception.net أيام حتى مؤلفي التكرار C/C ++ الحالي و Python: P4TR! CK ، Bobbysing ، Xero | Hawk ، Ajkhoury ، و Zoomgod et al. بفضل Wojciech Mula على موارد البرمجة SIMD الخاصة به.
صدر تحت معهد ماساتشوستس للتكنولوجيا © 2022 من قبل كيفن ويذرمان