التعليمات:
ماذا؟
يهدف هذا المشروع إلى أن يكون مشروعًا هندسيًا عكسيًا كامل المصدر للكمبيوتر الشخصي المتكامل Metal Gear. هذا يعني "تحويل" جميع mgsi.exe إلى رمز المصدر القابل للتنسيق.
كيف؟
باستخدام DLL الذي يتم تحميله ، يمكن بعد ذلك استبدال الوظائف في وقت التشغيل. تعمل اللعبة بالفعل على تحميل DLL من إرادتها الحرة. لذلك يمكن استبدال DLL هذا ببساطة بالرمز الذي يتولى نقطة دخول WinMain.
على سبيل المثال:
- mgsi.exe يبدأ.
- تقوم وظيفة WinMain الخاصة به بمكتبة التحميل على libeula.dll من أجل عرض مربع حوار EULA.
- منذ أن تم استبدال DLL برمزنا لدينا الآن ، لدينا DLL تحميل رمز وتنفيذ في محتوى mgsi.exe
- من هنا يمكننا تنفيذ استبدال WinMain (بدون جزء التحميل libeula.dll لتجنب العودية). وربط جميع الوظائف التي تمت إعادة تنفيذها.
على سبيل المثال:
void CC Actor_DestroyOnNextUpdate(Actor* pActor)
{
pActor->mFnUpdate = Actor_Destroy;
}
MGS_FUNC_IMPLEX(0x0040A3ED, Actor_DestroyOnNextUpdate, true);
سوف يتسبب في الوظيفة في mgsi.exe على العنوان 0x0040a3ed للاتصال بوظيفة الاستبدال ACTOR_DESTROYONTEXTUPDATE. هذا يسمح بالتحقق من هذه الوظيفة الفردية دون الحاجة إلى إعادة تنفيذ كل شيء حتى نقطة الاتصال الخاصة به.
لماذا؟
- معرفة.
- MODS (معرفة تنسيقات ملفات الألعاب والأعمال من الداخل إلى الخارج سوف تفتح هذا ، مع إضافة أي ميزات مطلوبة سيكون ممكنًا).
- compatiblity/الإصلاحات (يمكن إزالة/استبدال API القديم مثل استخدام DirectInput أو DirectX7).
- Portablity (عند اكتمالك يمكنك المنطق إلى Linux و OSX و Android و XYZ).
- الميزات (يمكن استعادة اهتزاز وحدة التحكم ، وإصلاح مضاونة رسومات PSX بحيث يتم حل مشكلات القتال/العمق z).
ماذا أحتاج/كيف أساهم؟
- نسخة كاملة من Metal Gear Solid Integral PC.
- معرفة C/C ++ و X86 التجميع.
- نسخة من أحدث قاعدة بيانات IDA.
- Visual Studio (سوف يتغير في المستقبل عندما يتم عكس اللعبة بالكامل وتعمل قائمة بذاتها ، في الوقت الحالي مطلوب MSVC ABI حتى تكون وظائف الاستبدال متوافقة.
- كن مجنونا بما يكفي لاتخاذ مشروع مثل هذا.
للتعرف على ما هو مطلوب ، ستكون المهمة الأولى الجيدة هي اختيار وظيفة بسيطة غير عكسها. فهم ما تفعله وأرسل العلاقات العامة لتنفيذها.
أي IRC/Discord وما إلى ذلك؟
Discord هنا: https://discord.gg/ttvhq8w