Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dconstruct — مفكك شيفرات & مفكك تجريبي لسكريبتات TLOU2 DC. | Kitploit
أدوات/GitHubGitHub/deepquantum/dconstruct
التحليل الثابتالهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائيةتحليل البرامج الثابتة
GitHubdeepquantum/dconstruct

dconstruct

مفكك شيفرات & مفكك تجريبي لسكريبتات TLOU2 DC.

عرض المستودع
23219منذ 21 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Version License: CC BY-NC-ND 4.0

dconstruct

الرسوم المتحركة للتفكيك الكامل وإعادة الترجمة

فتح ملف MP4 المصدر

dconstruct هي أداة هندسة عكسية لملفات DC-Script المستخدمة في The Last of Us Part II. تحتوي على مفكك ومترجم عكسي.

يُنتج ملفات .asm تحتوي على الهياكل المفككة والبايت كود، بالإضافة إلى ملفات .dcpl (لغة DC شبه) تحتوي على كود شبيه بلغة C.

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

الميزات الرئيسية

  • محسّن للسرعة. تفكيك وإعادة ترجمة الملفات سريع جدًا.
  • إعادة بناء دقيقة للكود المصدري الأصلي، خاصة تدفق التحكم
  • تفسير تلقائي دقيق لجميع الهياكل في التفكيك
  • تفكيك وإعادة ترجمة عدة ملفات في نفس الوقت. إعادة ترجمة كل ملف .bin في اللعبة يستغرق بضع ثوانٍ فقط
  • إجراء تعديلات عبر العلامة -e، وإنشاء ملفات جديدة يمكن استخدامها للتعديلات (mods)
  • تحميل قواعد sidbases مخصصة لاستخدامها في التفكيك

كيفية الاستخدام

أولاً، يُوصى بنقل مجلد dconstruct الذي تم فك ضغطه إلى موقع آمن، مثل C:\Program Files.

لجعل استخدام dconstruct سهلاً قدر الإمكان، يُوصى بإضافة مجلد .\bin داخل مجلد dconstruct إلى PATH. يمكنك معرفة المزيد هنا، أو اتباع هذه الخطوات السريعة:

  • اذهب إلى شريط بحث Windows واكتب "environment variables"، يجب أن تحصل على خيار يقرأ "Edit the system environment variables"
  • بعد اختيار هذا الخيار، يجب أن تظهر نافذة بعنوان "System properties". فوق أزرار "Ok" و "Cancel" و "Apply"، يجب أن ترى زرًا مكتوبًا عليه "Environment variables..."
  • بعد النقر على هذا الزر، ستظهر نافذة أخرى. هنا، اذهب إلى الجدول الثاني (بعنوان "System variables") وابحث عن الإدخال الذي يحمل اسم المتغير "Path". انقر نقرًا مزدوجًا عليه.
  • في هذا المربع، اختر خيار "New" على اليمين. الآن الصق المسار إلى مجلد .\bin. يجب أن يبدو شيئًا كهذا:

a

  • تأكد من أن مسارك ينتهي بـ "\bin" وليس "\dconstruct".
  • انقر على 'OK' في جميع مربعات الحوار المفتوحة.
  • للتحقق من نجاح العملية، افتح موجه أوامر جديد واكتب dconstruct --about. يجب أن ترى بعض المخرجات من البرنامج ولا توجد رسالة خطأ.

قم بتشغيل أمر مثل هذا في سطر الأوامر لإنشاء أول ملف مفكك لك:```shell dconstruct my_bin_file.bin

سيؤدي هذا بعد ذلك إلى إخراج ملف باسم `my_bin_file.bin.asm` في نفس الدليل الذي يحتوي على ملف الإدخال الخاص بك. يمكنك بعد ذلك فتح هذا الملف باستخدام محرر نصوص/أكواد. أوصي باستخدام شيء مثل VSCode الذي يوفر ميزات بحث متقدمة وهو جيد في التعامل مع الملفات الكبيرة. لا يُنصح باستخدام برنامج "المفكرة" القياسي في Windows.

لفك ترجمة ملف، أضف العلامة `--decompile` عند تشغيل الأمر.

# وسائط سطر الأوامر

- `-i` - ملف الإدخال أو المجلد. يمكن حذفه إذا مررت مسار الإدخال كوسيطة أولى.

- `-o` - مسار الإخراج. إذا كان مسار الإدخال الخاص بك هو مجلد، فلا يمكن أن يكون هذا ملفًا. إذا لم يتم تحديد إخراج، فسيتم وضع ملف .txt بجوار ملف الإدخال. إذا كان الإدخال مجلدًا ولم يتم تحديد إخراج، فسيقوم البرنامج بإنشاء دليل "output" في دليل العمل الحالي ووضع جميع الملفات فيه.

- يتم تحميل sidbase من `sidbase.bin` الموجود بجوار الملف القابل للتنفيذ.

- `--no_decompile` - لا يصدر كودًا مفكوكًا زائفًا إلى ملف .dcpl. سيتم وضع الملف بجوار ملف .asm. هذا خطأ افتراضيًا.

- `--no_optimize` - لا يحسن وينظف كود dcpl. يتضمن ذلك تضمين استدعاءات الدوال، وإزالة المتغيرات غير المستخدمة، وتحويل حلقات for المتوافقة إلى حلقات foreach، وتحويل بعض سلاسل if-else إلى تعبيرات match.

- `--pascal_case` - يحول أسماء دوال الألعاب إلى حالة Pascal في إخراج dcpl، على سبيل المثال get-boolean -> GetBoolean.

- `--graphs` - يصدر ملفات .svg تحتوي على رسوم بيانية لتدفق التحكم لجميع الدوال المفكوكة. يحصل كل ملف .bin على مجلده الخاص الذي يحتوي على جميع رسومه البيانية. هذا **يبطئ** سرعة فك الترجمة بشكل كبير، لذا لا يُنصح به عند فك ترجمة عدد كبير من الملفات في نفس الوقت.

- `--emit_once` - يمنع إصدار نفس الهيكل مرتين في التفكيك. إذا ظهر هيكل عدة مرات، فسيتم إصدار المثيل الأول فقط بالكامل، وسيتم استبدال جميع المناسبات الأخرى بعلامة `ALREADY_EMITTED`. يمكن أن يقلل هذا من حجم الملف بشكل كبير.

- `-e` - إجراء تعديل. مزيد من المعلومات في القسم أدناه.

- `--edit_file` - تقديم ملف تحرير. يحتوي ملف التحرير على تعديل واحد لكل سطر. يستخدم نفس بناء الجملة مثل العلامة -e.

# ما هو المفكك؟

[المفكك](https://en.wikipedia.org/wiki/Disassembler) هو أداة تقرأ التعليمات الثنائية (المعروفة أيضًا باسم [bytecode](https://en.wikipedia.org/wiki/Bytecode) أو [machine code](https://en.wikipedia.org/wiki/Machine_code)) وتترجم كل منها إلى نسخة قابلة للقراءة البشرية تسمى [mnemonic](https://en.wikipedia.org/wiki/Assembly_language#Mnemonics). بشكل عام، لا تحاول المفككات تفسير الكثير حول معنى هذه التعليمات وتقوم فقط بتحويلها 1-1 إلى إصداراتها القابلة للقراءة. على سبيل المثال، التعليمات:```arm
15 00 00 00
4A 01 01 00
43 31 01 00
1C 00 00 01

يتم تفكيكها إلى الإصدارات القابلة للقراءة البشرية التالية:```arm LookupPointer r0, 0 LoadStaticU64Imm r1, 1 Move r49, r1 CallFf r0, r0, 1

جميع الأرقام في البايت كود مكتوبة بنظام [الست عشري](https://en.wikipedia.org/wiki/hexadecimal). يمثل العمود الأول في كل صف `opcode`، أو نوع التعليمات التي سيتم تنفيذها. العمود التالي هو سجل الوجهة، حيث سيتم تخزين نتيجة العملية. آخر عمودين هما المعاملان 1 و2، وهما إما سجلات أو أرقام حرفية سيتم تنفيذ العملية عليها. ليست كل التعليمات تستخدم جميع البايتات الأربعة، على سبيل المثال، تعليمة `LookupPointer` الأولى تحتاج فقط إلى معامل واحد.

يضيف مفكك dconstruct أيضًا بعض المعلومات الإضافية المصممة لتسهيل قراءة التعليمات بعض الشيء. كما يقوم بإدراج تسميات (مثل `L_0`) لتسهيل تتبع الفروع في الكود.```arm
15 00 00 00   LookupPointer        r0, 0         r0 = ST[0] -> <is-player-abby?>
4A 01 01 00   LoadStaticU64Imm     r1, 1         r1 = ST[1] -> <player>
43 31 01 00   Move                 r49, r1       r49 = player
1C 00 00 01   CallFf               r0, r0, 1     r0 = is-player-abby?(player)
2F 0D 00 00   BranchIfNot          r0, 0xD       IF NOT r0 => L_0

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

ما هو المفكك؟

المفكك هو عكس المترجم. المترجم هو برنامج يأخذ الكود المكتوب بواسطة البشر (مثل C، Java، C++، ...) وينتج تعليمات الآلة. في حالة TLOU2 والعديد من ألعاب ND الأخرى، لغة البرمجة النصية المستخدمة تسمى 'DC'، وهي في الأساس مجرد نسخة من لغة البرمجة Racket>)، و"الآلة" هي اللعبة نفسها التي تنفذ التعليمات أثناء تشغيل اللعبة. بشكل أساسي، يكتب المبرمجون بلغة DC ويستخدمون مترجمًا لتحويل هذا الكود إلى ملفات .bin التي تُشحن مع اللعبة.

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

تنزيل الأداة