
رمز التجميع لتغيير سلوك البرنامج الحالي ليس من غير المألوف في تحليل البرامج الضارة ، والهندسة العكسية للبرامج ، والمجالات الأوسع لأبحاث الأمان. يمتد هذا المشروع من IDA Pro Disassembler الشهير لإنشاء سير عمل ثنائي تفاعلي أكثر قوة مصمم للتكرار السريع.
يتم تشغيل هذا المشروع حاليًا بواسطة شوكة بسيطة من محرك Keystone في كل مكان ، ودعم X86/X64 و ARM/ARM64 مع خطط لتمكين بنية Keystone المتبقية في إصدار مستقبلي.
شكر خاص للأشعة السداسية لدعم تطوير هذا البرنامج المساعد.
يتطلب هذا البرنامج المساعد IDA 7.6 و Python 3. يدعم Windows و Linux و MacOS.
يرجى ملاحظة أن الإصدارات الأقدم من IDA (8.2 وأقل) غير متوافقة مع Python 3.11 وما فوق.
قم بتشغيل السطر التالي في وحدة التحكم IDA لتثبيت المكون الإضافي تلقائيًا:
import urllib . request as r ; exec ( r . urlopen ( 'https://github.com/gaasedelen/patching/raw/main/install.py' ). read ()) import urllib . request as r ; exec ( r . urlopen ( 'https://github.com/gaasedelen/patching/raw/main/install.py' , cafile = '/etc/ssl/cert.pem' ). read ())بدلاً من ذلك ، يمكن تثبيت المكون الإضافي يدويًا عن طريق تنزيل حزمة المكون الإضافي القابل للتوزيع لنظام التشغيل الخاص بك من صفحة الإصدارات وفكها إلى مجلد الإضافات.
يوصى بشدة بتثبيت هذا البرنامج المساعد في دليل البرنامج المساعد الخاص بـ IDA:
import ida_diskio , os ; print ( os . path . join ( ida_diskio . get_user_idadir (), "plugins" ))سيتم تحميل المكون الإضافي للترقيع تلقائيًا للبنية المدعومة (X86/X64/ARM/ARM64) وحقن إجراءات التصحيح ذات الصلة في قائمة سياق النقر بزر الماوس الأيمن لوجهات عرض IDA:

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

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

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

يمكن أن تكون الإرشادات الفردية nop'ed ، بالإضافة إلى مجموعة محددة من التعليمات.
إن إجبار القفزة المشروطة على تنفيذ المسار "الجيد" دائمًا هو إجراء آخر مشترك للتصحيح. سيعرض البرنامج المساعد هذا الإجراء فقط عند النقر بزر الماوس الأيمن على تعليمات القفز الشرطية.

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

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

على الرغم من أنه من "السهل" العودة إلى قيمتها الأصلية ، إلا أنه يمكن أن يكون "صعبًا" لاستعادة التحليل إلى حالته السابقة. قد يتطلب عودة التصحيح أحيانًا إصلاحات بشرية إضافية.
سماح الوقت والدافع ، قد يشمل العمل المستقبلي:
xor eax, eax; ret; سبيل المثال Pretty: mov [rsp+48h+dwCreationDisposition], 3
Raw: mov [rsp+20h], 3
أرحب بالمساهمات الخارجية والقضايا وطلبات الميزات. يرجى تقديم أي طلبات سحب إلى فرع develop هذا المستودع إذا كنت ترغب في النظر في إصدار مستقبلي.