Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
oregami — إضافات ونصوص IDA لتحليل إطار استخدام المسجلات | Kitploit
أدوات/GitHubGitHub/shemesh999/oregami
التحليل الثابتالهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائية
GitHubshemesh999/oregami

oregami

إضافات ونصوص IDA لتحليل إطار استخدام المسجلات

عرض المستودع
18222منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Oregami

"""
ما هو استخدام هذا المُسجِّل؟
همم.. سأُعيد تسميته إلى veryuniquename، وأبحث نصيًا، وأجد كل المراجع!
حسنًا.. في انتظار انتهاء البحث.. في أي لحظة الآن.. تم!
الآن علي فقط فهم أي من نتائج البحث ذات صلة بإطار الاستخدام الحالي للمُسجِّل.
لا ينبغي أن يكون الأمر صعبًا جدًا، أليس كذلك؟
"""

إذا حدث لك هذا (ربما أكثر من مرة)، فأنت على موعد مع متعة!
فقط اضغط Shift-X، وستختفي مشاكلك!

يمكنك أيضًا إعادة تسمية المُسجِّل في إطار الاستخدام. فقط اضغط Shift-N، واتبع التعليمات!
أيضًا - بدلاً من تغيير أنواع جميع الاستخدامات إلى نوع معين، فقط اضغط Shift-T مرة واحدة.

وأخيرًا وليس آخرًا - إذا أردت تعيين إزاحة (مثل Ctrl-R) لجميع استخدامات هذا المُسجِّل، فقط اضغط Shift-R.

ملاحظة: أحيانًا يوجد إضافة أخرى تستخدم Shift-T. قم بإزالة تلك الإضافة - أنت لم تستخدمها من قبل على أي حال :-).

التثبيت

المتطلبات الأساسية

تستخدم هذه الإضافة sark للتفاعل مع نصوص IDA بطريقة مريحة، و cachetools لتخزين مسح الإطار مؤقتًا مما يجعله أسرع بكثير.

توافق إصدار IDA

تدعم Oregami كلاً من IDA 7.x/8.x و IDA 9.0+.
إذا كنت تستخدم IDA 9، تأكد من أن لديك إصدارًا محدثًا من sark يدعم IDA 9.

ملاحظة: IDA 9 قدم وظيفة Shift-X الخاصة به. إذا كنت بحاجة إلى استخدام Shift-X المدمج في IDA بدلاً من وظيفة Oregami، فيجب عليك تغيير اختصار oregami في ملف الإضافة.

إعداد Python / sark

[لـ python3]
pip3 install sark

[لـ python2]
إذا كنت تستخدم إصدار python2 من IDA، فيجب عليك بدلاً من ذلك تشغيل: pip2 install -U git+https://github.com/tmr232/[email protected]#egg=Sark

لاحظ أن python2 غير مدعوم بشكل نشط (حيث أن IDA انتقلت في الغالب إلى python3، وكذلك أنا)، لذلك قد لا يعمل هذا.

استنساخ المستودع

git clone https://github.com/shemesh999/oregami

تثبيت الإضافة

يقدم كود sark العديد من الإضافات. واحد منها هو: https://github.com/tmr232/Sark/blob/master/plugins/plugin_loader.py

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

الآن، أضف إلى أحد ملفات plugins.list:
FULLPATH\oregami\oregami_plugin.py
FULLPATH\oregami\regname_plugin.py
FULLPATH\oregami\typeregter_plugin.py
FULLPATH\oregami\offreg_plugin.py

أعد تشغيل IDA، وستعمل الإضافات.

بديل:
انسخ جميع الملفات (بما في ذلك المجلد الداخلي oregami، باستثناء setup.py) إلى دليل إضافات IDA.

الاستخدام كسكريبت

بالإضافة إلى استخدامها كإضافات، يمكن استخدام oregami أيضًا لكتابة السكريبتات الخاصة بك!

لهذا، يجب عليك أولاً التثبيت باستخدام ملف setup.py المرفق. بمعنى أنه يجب عليك استدعاء:
'python setup.py develop'، ومن ثم يمكنك استخدام الفئات والوظائف الداخلية.
لاحظ أننا نوصي باستخدام 'develop' وليس 'install'، حتى إذا قمت بسحب إصدار جديد من oregami، فسيعمل مباشرة.

على سبيل المثال:
-- script.py --

root@kitploit:~
def find_func_usage(func_ea, reg='r0'):
    """
    البحث وطباعة جميع استخدامات المُسجِّل، بما في ذلك معلومات عن المعاملات المحددة
    التي يوجد فيها، والعملية التي يقوم بها في المعامل.
    """
    import oregami
    rf = oregami.RegFrame(func_ea, reg)
    for insn in rf.get_instructions():
        print('Addr:{:x}'.format(insn.ea))
        for opnd in insn.operands:
            if opnd.uf_is_external:
                continue
            print('--opnd_idx:{} - {}'.format(opnd.n, oregami.UsageBits(opnd.op_flags)))

مسح إطار الاستخدام

لنفترض التسلسل التالي من الرموز:

root@kitploit:~
ROM:01000010                    e_lis     r10, 0x4004 # 0x40040000              # تحميل فوري منزاح
ROM:01000014                    e_add16i  r10, r10, 0x1337 # 0x40041337         # إضافة فورية
ROM:01000020                    se_mr     r30, r31                              # نقل مُسجِّل
ROM:01000022                    cmplw     r11, r10                              # مقارنة كلمة منطقية
ROM:01000026                    se_bge    loc_1000036                           # فرع إذا كان أكبر من أو يساوي
ROM:01000028
ROM:01000028    loc_1000028:                                                    # مرجع كود XREF: sub_0100000+144↓j
ROM:01000028                    e_stmw    r30, 0(r11)                           # تخزين كلمات متعددة
ROM:0100002C                    e_add16i  r11, r11, 8                           # إضافة فورية
ROM:01000030                    cmplw     r11, r10                              # مقارنة كلمة منطقية
ROM:01000034                    se_blt    loc_1000028                           # فرع إذا كان أقل من
ROM:01000036
ROM:01000036    loc_1000036:                                                    # مرجع كود XREF: sub_0100000+136↑j
ROM:01000036                    e_add16i r10, r10, 8                            # إضافة فورية
ROM:0100003A                    e_li      r11, 0                                # تحميل فوري

إذا قمنا بمسح إطار استخدام المُسجِّل r10، بدءًا من العنوان 01000022، سنجد ثلاثة أنواع من الاستخدامات ضمن إطار الاستخدام.

1. التهيئة

سيشمل ذلك التعليمات التي تهيئ قيمة المُسجِّل.
قد نرغب في تضمين فقط آخر تعليمات غيرت قيمة المُسجِّل (العنوان 01000014 في المثال)، أو سلسلة من العمليات المستخدمة لتعيين القيمة الأولية للمُسجِّل (العناوين 01000010 و 01000014 في المثال).
يمكن تسمية سلسلة العمليات المستخدمة في تهيئة المُسجِّل بـ "مرحلة التهيئة".
يمكنك اختيار دعم مرحلة التهيئة أم لا، اعتمادًا على المعامل init_stage_bool في تهيئة RegFrame.

2. نقي

سيشمل ذلك التعليمات التي تستخدم قيمة المُسجِّل ولا تغيرها بأي شكل. هذه تتوافق مع السطرين 01000022 و 01000030 في المثال.

3. فاصل

سيشمل ذلك التعليمات التي تستخدم قيمة المُسجِّل ولكنها تغير قيمته بعد ذلك. يمكن رؤية هذه التعليمات كجزء من إطارين استخدام متميزين - الإطار المؤدي إليهما، والإطار الناشئ عنهما.
هذا يتوافق مع السطر 01000036.

4. فاصل خارجي

عند مسح إطار استخدام المُسجِّل، الوصول إلى عملية تهيئة أو عملية فاصل سيتسبب في إيقاف المسح في اتجاه معين.
ولكن، قد نوقف المسح أيضًا بسبب تعليمات خارج إطار الاستخدام. على سبيل المثال، مسح إطار استخدام المُسجِّل r11 بدءًا من العنوان 01000030 سيتوقف عند السطر 0100003A.

الفئات والوظائف

RegFrame

هذه هي الفئة الأساسية المستخدمة في oregami. عن طريق تهيئتها على عنوان ومُسجِّل محدد، ستقوم بمسح إطار استخدام المُسجِّل، وستنشئ UFInstruction لجميع التعليمات ذات الصلة.
get_instruction - الحصول على التعليمات من العنوان المحدد
get_instructions - مولد، يعيد التعليمات الموجودة في إطار الاستخدام.

يمكنك أيضًا طلب مجموعات فرعية محددة من التعليمات المستخدمة:
get_init_instructions - الحصول فقط على تعليمات من نوع التهيئة
get_pure_instructions - الحصول فقط على تعليمات من نوع النقي
get_break_instructions - الحصول فقط على تعليمات من نوع الفاصل
get_nobreak_instructions - الحصول فقط على تعليمات ليست من نوع الفاصل (أي تهيئة + نقي)
get_noinit_instructions - الحصول فقط على تعليمات ليست من نوع التهيئة (أي نقي + فاصل)
get_outbreak_instructions - الحصول فقط على تعليمات من نوع الفاصل الخارجي

افتراضيًا، ستقوم هذه الفئة بتخزين نتائج المسح مؤقتًا، وتمنع إعادة مسح نفس إطار الاستخدام. هذا يعني أن طلب RegFrame لأي تعليمات كانت جزءًا من إطار الاستخدام (خاصة من أنواع التهيئة + النقي. وليس الفواصل، لأن بدء المسح عليها يجب أن يعيد إطار الاستخدام الناشئ عنها) سيعيد نفس مثيل RegFrame المحسوب مسبقًا. لإجبار إعادة المسح، استخدم علامة force عند تهيئة الفئة.

RFInstruction

هذه هي الفئة التي يعيدها RegFrame، وتمثل تعليمة في إطار الاستخدام.

ترث هذه الفئة من فئة Instruction في sark، وبالتالي تدعم نفس الأساليب.
الفرق الرئيسي هو أنه بدلاً من احتواء مصفوفة من فئة Operand في sark، ستحتوي على مصفوفة من فئة UFOperand.

تحتوي هذه الفئة أيضًا على أساليب لفهم نوع التعليمة (تهيئة، نقي، فاصل، فاصل خارجي)، وبتات العمليات (قراءة، كتابة، صريح، وأنواع مختلفة من الضمني)

RFOperand

هذه هي الفئة الموجودة في مصفوفة المعاملات داخل UFInstruction معينة.

ترث هذه الفئة من فئة Instruction في sark، وبالتالي تدعم نفس الأساليب.

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

RegInstruction

هذه فئة تُستخدم لتحليل تعليمة معينة، لمعرفة استخدامها فيما يتعلق بالمُسجِّلات.
تفعل ذلك باستخدام المعرفة من IDA، والتحليل النصي، وتفاصيل محددة خاصة بالمعالج. سبب هذه الفئة هو أن التحليل الأساسي لـ IDA يميل إلى الكذب بشأن مجموعة المُسجِّلات المستخدمة، والطريقة التي تُستخدم بها في العديد من الرموز.

ترث هذه الفئة من فئة Instruction في sark، وبالتالي تدعم نفس الأساليب.
الفرق الرئيسي هو أنه بدلاً من احتواء مصفوفة من فئة Operand في sark، ستحتوي على مصفوفة من فئة RegOperand.

RegOperand

هذه فئة تُستخدم لتحليل معامل معين، لمعرفة استخدامه فيما يتعلق بالمُسجِّلات.
تفعل ذلك باستخدام المعرفة من IDA، والتحليل النصي، وتفاصيل محددة خاصة بالمعالج. سبب هذه الفئة هو أن التحليل الأساسي لـ IDA يميل إلى الكذب بشأن مجموعة المُسجِّلات المستخدمة، والطريقة التي تُستخدم بها في العديد من الرموز.

ترث هذه الفئة من فئة Operand في sark، وبالتالي تدعم نفس الأساليب.

تنزيل الأداة