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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Transformers-Forged-To-Fight-Offline-Version — TRANSFORMERS: Forged to Fight هي لعبة قتال ثلاثية الأبعاد حيث تتولى قيادة بعض من أبرز الجنود الأكثر كاريزما من عالم Transformers. نحن نتحدث عن أسماء كبيرة مثل Optimus Prime وMegatron وBumblebee وRatchet وSoundwave وGrindor – ولا أقل. نعم، لقد قرأت ذلك بشكل صحيح. شخصياتك المفضلة من أي Transformers | Kitploit
أدوات/GitHubGitHub/geamztheangrybirds727/transformers-forged-to-fight-offline-version
التحليل الديناميكي (عزل)الهندسة العكسيةمصممي الأخطاءتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليمموارد منسقةاستغلال الملفات الثنائية

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
GitHub
geamztheangrybirds727/transformers-forged-to-fight-offline-version

Transformers-Forged-To-Fight-Offline-Version

عرض المستودع
27منذ 2 أشهرلم تتم المراجعة بعد

حول

TRANSFORMERS: Forged to Fight هي لعبة قتال ثلاثية الأبعاد حيث تتولى قيادة بعض من أبرز الجنود الأكثر كاريزما من عالم Transformers. نحن نتحدث عن أسماء كبيرة مثل Optimus Prime وMegatron وBumblebee وRatchet وSoundwave وGrindor – ولا أقل. نعم، لقد قرأت ذلك بشكل صحيح. شخصياتك المفضلة من أي Transformers

مشاركة

Transformers: Forged to Fight - إحياء وضع عدم الاتصال وتسليم المشروع

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

اقرأ هذا الملف بالكامل قبل أن تلمس أي شيء. قسم "المصائب" (Gotchas) بشكل خاص سيوفر لك أيامًا.

ما يعمل بالفعل الآن

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

كان هذا الجزء الصعب وقد تم حله. العميل نفسه يعود للحياة دون اتصال الآن.

ما لا يعمل، ولماذا

اللعب الفعلي لا يعمل. لا تُظهر القصة أي مهام، ولا يمكن تحميل المعارك بالكامل. هذا ليس خطأ وليس شيئًا يمكن لتصحيح إصلاحه.

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

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

كيف يعمل الإقلاع دون اتصال

هناك أربعة أجزاء متحركة. معًا تجعل اللعبة غير المعدلة تعتقد أنها تتحدث إلى Kabam.

  1. تصحيحات ثنائية أصلية. اللعبة هي Unity IL2CPP، لذا المنطق يعيش في مكتبة ARM مترجمة، libil2cpp.so، وليس في ملفات نصوص قابلة للتعديل. patches/patch_il2cpp.py يعيد كتابة ست وظائف في تلك المكتبة لتجاوز فحوصات الخادم الميتة: يهزم مسارين لتثبيت الشهادة بحيث يتم قبول شهادة TLS الخاصة بنا، ويجبر كتلة تسجيل المدير على التشغيل حتى عندما يكون التكوين الحي فارغًا، ويسمح بتسجيل الدخول بالنجاح باستخدام جلسة جهازنا المحلي، ويُسكت الأخطاء الفادحة للنظام الفرعي التي كانت ستظهر حوار "فشل تسجيل الدخول". كما يعيد حقن إدخال تبعية واحد (انظر قسم المصائب) حتى يتم تحميل ربط وقت التشغيل بالفعل. المخرجات هي libil2cpp.patched.so.

  2. خادم Sparx مزيف. server/fakeserver.py يقف مكان النهاية الخلفية لـ Kabam. يستمع على TLS 443 و HTTP عادي 80 ويجيب على استدعاءات API للعبة. الردود المعلبة موجودة في server/responses/، ملف واحد لكل نقطة نهاية، مسماة بالطريقة والمسار، على سبيل المثال GET__account_data.json. تتم الإجابة على عدد قليل من نقاط النهاية ديناميكيًا في الكود بدلاً من ملف، لأن اللعبة تتوقع منها أن تعكس القيم من الطلب (نقاط نهاية التعليم ونقطة نهاية تفاصيل البطل). غلاف الرد هو {"error":null,"result": ...}. لاحظ أنه داخل حمولات خطأ Sparx، الحقل مكتوب err، وليس error. هذه التفاصيل مهمة ومن السهل تفويتها.

  3. ربط وقت تشغيل أصلي. tools/nativehook/ يبني ، مكتبة صغيرة يتم تحميلها في اللعبة عند بدء التشغيل وتسجل كل مفتاح بيانات تقرأه اللعبة، بالإضافة إلى بعض التوجيهات السلوكية المستهدفة. هذه هي حلقة التغذية الراجعة التي جعلت كل شيء آخر ممكنًا: تخبرك بالضبط بما تطلبه اللعبة حتى تتمكن من تجميع رد والتحقق منه. إنه ربط سطري خالص لتجاوز البايت يتم تثبيته قبل التنفيذ، لأن الأداة العادية لهذا (Frida) تتعطل تحت طبقة ترجمة ARM للمحاكي.

تدفق البيانات في وقت التشغيل هو: اللعبة تقوم باستدعاء HTTPS إلى نطاق Kabam، ملف المضيفين يرسله إلى الكمبيوتر الشخصي، الخادم المزيف يجيب برد من server/responses/، المكتبة المصححة تقبل الشهادة والرد، والربط يسجل ما تم قراءته. تلك الحلقة هي كيف تم إحضار كل شاشة في هذا البناء.

ما هو موجود في هذه الحزمة

root@kitploit:~
README.md                     هذا الملف
TECHNICAL_NOTES.md            المرجع التقني الأعمق: التصحيحات، أشكال البيانات المستردة، النتائج
patches/
  patch_il2cpp.py             التصحيحات الأصلية الستة بالإضافة إلى إعادة حقن التبعية
  disasm_fn.py                مساعد: تفكيك دالة عند إزاحة
  find_callers.py             مساعد: إيجاد مستدعي دالة
  find_str_ref.py             مساعد: إيجاد مراجع لسلسلة
server/
  fakeserver.py               خادم Sparx المزيف
  gen_certs.sh                إعادة إنشاء شهادة TLS و CA (شغّل هذا، انظر أدناه)
  setup_device.sh             مرجع إعداد الشبكة والثقة من جانب الجهاز
  iterate.sh                  إعادة تشغيل سريعة وحلقة التقاط
  responses/                  ملف JSON واحد لكل نقطة نهاية تستدعيها اللعبة
tools/
  provision_ldplayer.sh       إعادة تجهيز المحاكي للحالة العاملة بضربة واحدة
  setup_arm64.sh              ملاحظات إعداد سلسلة الأدوات
  decompile_targets.py        تشغيل مفكك Ghidra بدون واجهة عند إزاحات مختارة
  find_xrefs.py               بحث عن المراجع المتقاطعة عبر الثنائي
  apply_labels.py             تطبيق تسميات رموز IL2CPP
  light_analyze.py            مساعدات تحليل ثابت خفيفة
  frida_attach.py             مساعدات Frida (محفوظة للرجوع إليها، انظر ملاحظة libnb)
  frida_run.py
  hook_dot.js
  nativehook/
    hook.c                    مصدر libdothook.so، ربط وقت التشغيل
    libdothook.so             ربط مبني مسبقًا، arm64
    deploy.sh                 بناء ونشر الربط
    relaunch_and_capture.sh   إعادة تشغيل اللعبة والتقاط السجلات
  hook/dothook.c              نوع سابق من الربط، محفوظ للرجوع إليه
re_notes/
  dump.cs                     تفريغ IL2CPP الكامل: كل صنف، طريقة، وحقل في اللعبة
  decomp_out.c                أجسام مفككة لوظائف رئيسية
  decompile_targets.txt       الإزاحات التي تستحق التفكيك
  ASSET_INVENTORY.txt         ما الفن والصوت الذي يأتي بالفعل داخل التطبيق

re_notes/dump.cs هو الملف الأكثر قيمة للعمل المتبقي. إنه نموذج النوع الكامل للعبة: كل صنف، كل طريقة، والأهم كل حقل بيانات يقرأه العميل من الخادم. إنه خريطتك لواجهة برمجة التطبيقات الخلفية بأكملها. عندما تحتاج لمعرفة الشكل الذي يجب أن يكون عليه الرد، الإجابة موجودة هناك.

ما ليس في هذه الحزمة، وأين تحصل عليه

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

  • ملف APK نفسه (com.kabam.bigrobot، الإصدار 9.2.0). حجمه حوالي 800 ميغابايت. احصل على نسختك الخاصة. اسم الحزمة والإصدار موجودان في TECHNICAL_NOTES.md.
  • libil2cpp.so الأصلي وأصول اللعبة. كلاهما يأتي مباشرة من APK. قم بفك ضغط APK، المكتبة تحت lib/arm64-v8a/، الأصول تحت assets/.
  • شهادة TLS و CA. لا تقم بتوزيع المفاتيح الخاصة. شغل server/gen_certs.sh لإنشاء زوج مطابق خاص بك، ثم وجه مخزن الثقة للجهاز إلى CA الجديد.
  • المكتبة المصححة. أعد إنشائها: شغل patches/patch_il2cpp.py ضد libil2cpp.so الأصلي من APK.
  • خادم Frida و Il2CppDumper. كلاهما أدوات عامة. Il2CppDumper هو ما أنتج re_notes/dump.cs من مكتبة APK والبيانات الوصفية العامة.
  • Android NDK (تم استخدام r26) و JDK 21، اللازمان لبناء الربط وتشغيل مفكك Ghidra بدون واجهة.

كيفية تشغيل ما هو موجود اليوم

تحتاج إلى تثبيت APK على محاكي يدعم ترجمة ARM (تم استخدام LDPlayer 9، مع صلاحيات الجذر ونظام قابل للكتابة)، و Python على الكمبيوتر الشخصي، والعناصر من القسم أعلاه.

  1. أنشئ الشهادات مرة واحدة: bash server/gen_certs.sh.
  2. ابنِ المكتبة المصححة مرة واحدة: python patches/patch_il2cpp.py path/to/original/libil2cpp.so --apply.
  3. ابنِ الربط مرة واحدة إذا كنت تريد إعادة بنائه، وإلا استخدم المبني مسبقًا. انظر tools/nativehook/deploy.sh.
  4. ابدأ الخادم المزيف على الكمبيوتر الشخصي: python server/fakeserver.py. يجب أن يكون قابلاً للوصول على المنفذين 443 و 80 من المحاكي.
  5. جهّز الجهاز: bash tools/provision_ldplayer.sh <your-PC-LAN-IP>. أعد تشغيل هذا بعد كل إعادة تشغيل للمحاكي.
  6. انتظر حوالي 45 ثانية، ثم اضغط على شاشة العنوان لتسجيل الدخول. يجب أن تصل إلى الشاشة الرئيسية.

إذا تعلق الأمر عند تسجيل الدخول، تحقق من أول عنصر في قسم المصائب قبل أي شيء آخر.

المصائب التي ستأكل وقتك

هذه هي التي كلفتني ساعات. تم تدوينها حتى لا تكلفك نفس الشيء.

  • ربط وقت التشغيل يُحمل فقط من خلال إدخال تبعية لا تحتوي عليه المكتبة الأصلية. تبني سكريبت التصحيح من المكتبة الأصلية، لذا بدون إعادة إضافة هذا الإدخال لا يُحمل الربط بصمت ويتعلق تسجيل الدخول ببساطة. سكريبت التصحيح يعيد الآن حقنه في كل بناء. إذا بدا الربط ميتًا، أول شيء يجب التحقق منه هو أن المكتبة المصححة تشير بالفعل إلى libdothook.so. البايتات والإزاحات الدقيقة موثقة في سكريبت التصحيح وفي TECHNICAL_NOTES.md.
  • Frida لا يعمل إذا كنت تستخدم LDPlayer9/Bluestacks للاختبار. المحاكي يترجم ARM إلى x86، و Frida ينهار تحت تلك الترجمة. السبب الكامل لاستخدام المشروع لربط سطري خالص لتجاوز البايت هو أنه ينجو حيث لا ينجو Frida. لا تضيّع الوقت في محاولة جعل Frida يعمل.
  • تركيبات شبكة الجهاز لا تبقى بعد إعادة تشغيل المحاكي. إعادة توجيه المضيفين وثقة CA هي تركيبات ربط. بعد أي إعادة تشغيل للمحاكي، يجب إعادة تشغيل provision_ldplayer.sh أو لن يتصل أي شيء.
  • داخل حمولات خطأ Sparx، الحقل هو err، وليس error. استخدام الحقل الخطأ ينتج ردودًا يتجاهلها العميل بصمت أو يعالجها بشكل خاطئ.
  • حالات المطالبة بتعليم تفاعلي تتكرر إلى ما لا نهاية دون اتصال. لا تحاول الإجابة على طلب تعليم لإرضائه. بدلاً من ذلك، أزل الشرط الذي يطلق التعليم في المقام الأول. تم إصلاح تجميد تعليم الدرع بهذه الطريقة، بإعطاء اللاعب المورد الذي أدى غيابه إلى تشغيله، بدلاً من الإجابة على التعليم.
  • عرض المحتوى ثلاثي الأبعاد الحي تحت المحاكي هش. النماذج تُعرض، لكن هذه المنطقة هي الأكثر هشاشة وحساسة للنهاية الخلفية للرسومات وإعدادات القوام للمحاكي. هذه مشكلة رسومات المحاكي، وليست مشكلة بيانات.

إذا كنت تريد إحياءها فعلاً: إعادة بناء النهاية الخلفية

هذا هو العمل الحقيقي، وهو كبير. إليك شكله وأين تبدأ.

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

الطريقة التي تعمل هي الحلقة التي بني عليها هذا المشروع. شغّل اللعبة مع الربط المرفق. يسجل الربط كل مفتاح يقرأه العميل. عندما يطلب العميل شيئًا لم تقدمه، ترى بالضبط ما يريده. ثم تُنشئ ردًا بالشكل الصحيح، تضعه في server/responses/ أو تضيفه إلى المعالج الديناميكي في fakeserver.py، تعيد التشغيل، وتتحقق من أن العميل يقبله ويتقدم. كرر. كل شاشة في البناء الحالي تم إحضارها بهذه الطريقة بالضبط. re_notes/dump.cs يخبرك بشكل كل هيكل حتى قبل أن تشغل، لأنه يسرد كل حقل يقرأه العميل.

ترتيب معقول للهجوم:

  1. اجعل معركة واحدة كاملة تُحمل وتعمل من البداية إلى النهاية. هذا هو الهدف ذو القيمة الأعلى لأن القتال هو جوهر اللعبة ويستخدم أكبر قدر من بيانات الخادم في وقت واحد. تحتاج إلى تعريفات المشاركين وإحصائياتهم وقدراتهم، وكل ما يطلبه مسار بدء القتال. المعركة التمهيدية تبدأ بالفعل في التحميل، لذا هذا هو المكان الذي تدفع فيه أولاً. فكّك مسارات بدء القتال وبيانات القتال (استخدم decompile_targets.py) واقرأ الحقول المحددة.
  2. أعد بناء نموذج بيانات القائمة بالكامل، روبوتًا واحدًا في كل مرة، بما في ذلك الإحصائيات والقدرات. الفن لكل روبوت موجود بالفعل في الحزم المدرجة في ASSET_INVENTORY.txt، لذا أنت تؤلف فقط أرقامًا وتعريفات قدرات، وليس أصولًا.
  3. أعد بناء هياكل المهام والخرائط بحيث تتوقف القصة عن كونها فارغة. الهيكل الأساسي تم اختراقه جزئيًا بالفعل، انظر TECHNICAL_NOTES.md للمفاتيح.
  4. املأ الاقتصاد والتقدم أخيرًا، بمجرد وجود معارك ومهام لإنفاقها عليه.

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

ابدأ بـ TECHNICAL_NOTES.md. إنه المرجع التقني الأعمق، مع التصحيحات الدقيقة، أشكال البيانات المستردة، والنتائج المحددة، بمزيد من التفصيل من هذا README. ثم شغّل الحلقة.

بالتوفيق. إنها آلة حقيقية الآن. تحتاج فقط إلى إعادة بناء محتواها.

تنزيل الأداة
libdothook.so
  • توصيل الجهاز. يجب على المحاكي إرسال نطاقات Kabam إلى الكمبيوتر الشخصي والثقة في الشهادة المزيفة. tools/provision_ldplayer.sh يفعل هذا في خطوة واحدة: يدفع المكتبة المصححة والربط، ويعيد توجيه أسماء مضيفي Kabam إلى عنوان LAN للكمبيوتر الشخصي عبر ملف المضيفين، ويُركب CA المزيف في مخزن الثقة للنظام، ويُخفف SELinux. قم بتشغيله بعد كل إعادة تشغيل للمحاكي، لأن تلك التركيبات لا تبقى بعد إعادة التشغيل.