انتقل إلى المحتوى

فحص المؤشرات في Cheat Engine: اعثر على عناوين تبقى صالحة بعد إعادة التشغيل

Cheat-Engine.net بقلم Cheat-Engine.net قراءة 9 دقيقة 25 مشاهدات

لماذا تتغير العناوين في كل مرة تعيد فيها تشغيل اللعبة، وكيف تعمل المؤشرات متعددة المستويات، وكيف تستخدم فحص المؤشرات وخرائط المؤشرات وإعادة الفحص لبناء إدخالات تستمر في العمل.

وجدت قيمة صحتك، وحفظتها في جدول الغش، ثم أعدت تشغيل اللعبة، والآن يعرض الإدخال ?? أو رقمًا عشوائيًا. هذا ليس خطأً منك. معظم قيم الألعاب تُخزَّن في عنوان مختلف في كل مرة تعمل فيها اللعبة. المؤشر هو مسار يوصلك إلى القيمة انطلاقًا من نقطة بداية لا تتحرك، وأداة فحص المؤشرات في Cheat Engine هي الأداة التي تجد لك هذه المسارات.

يفترض هذا الدليل أنك تستطيع بالفعل العثور على قيمة باستخدام First Scan وNext Scan؛ وإن لم يكن الأمر كذلك فاقرأ أولًا شرح Cheat Engine للمبتدئين. استخدم هذه التقنيات في الألعاب الفردية وبدون اتصال فقط، وانسخ ملفات حفظك احتياطيًا قبل أن تجرب.

لماذا تتغير العناوين بين مرات إعادة التشغيل

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

وبالإضافة إلى ذلك، يحمّل Windows البرامج ووحداتها (الملف التنفيذي الرئيسي وملفات DLL الخاصة به) في عناوين أساسية متغيرة لأسباب أمنية. لهذا تُكتب العناوين الثابتة دائمًا نسبةً إلى وحدة، مثل "game.exe"+01A2B3C0، بدلًا من رقم خام.

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

كيف تعمل المؤشرات متعددة المستويات

المؤشر ببساطة هو قيمة تحمل عنوانًا. الألعاب مليئة بها: "مدير اللعبة" العام يحمل عنوان العالم، والعالم يحمل عنوان اللاعب، واللاعب يحمل عنوان كتلة الإحصائيات، وكتلة الإحصائيات تحمل الصحة عند الإزاحة 18. اتباع سلسلة كهذه من نقطة بداية ثابتة يوصلك دائمًا إلى العنوان الحالي للقيمة، بغض النظر عن مكان تخصيص الكائنات.

"game.exe"+01A2B3C0   read the 8-byte address stored here  (level 1)
  + 10                read the address stored here         (level 2)
  + 18                this is the health value

يكتب Cheat Engine المسار نفسه بصيغة الأقواس هكذا [["game.exe"+01A2B3C0]+10]+18: كل زوج من الأقواس يعني "اقرأ العنوان المخزن هنا". الإزاحات بالنظام السداسي عشر. المسار ذو الإزاحة الواحدة هو مؤشر أحادي المستوى؛ ومعظم الألعاب الحقيقية تحتاج من مستويين إلى خمسة.

الخطوة 1: اعثر على العنوان الحالي للقيمة

اعثر على القيمة كالمعتاد وأضفها إلى قائمة العناوين. تأكد من اختيار النوع الصحيح، لأن إدخال المؤشر سيرثه؛ يساعدك دليل أنواع القيم إذا لم تكن متأكدًا هل الصحة قيمة 4 Bytes أم Float. تأكد من العنوان بتغييره ورؤية التغيير في اللعبة.

الخطوة 2 (اختيارية): اعرف ما الذي يصل إلى العنوان

انقر بزر الماوس الأيمن على الإدخال واختر Find out what accesses this address أو Find out what writes to this address. يربط Cheat Engine مصحح الأخطاء الخاص به ويعرض التعليمات التي تلمس القيمة أثناء اللعب. تبدو النتيجة النموذجية مثل movss [rbx+18],xmm0 أو mov [rcx+18],eax. الرقم داخل الأقواس، وهو هنا 18، هو إزاحة القيمة داخل كائنها، والسجل (rbx أو rcx) كان يحمل عنوان الكائن في تلك اللحظة. اختيار التعليمة وفتح تفاصيلها يعرض قيم السجلات.

هذه هي الطريقة اليدوية لتتبع المؤشرات: تبحث عن عنوان الكائن كقيمة سداسية عشرية من 8 بايت لمعرفة ما يشير إليه، ثم تكرر ذلك لكل مستوى. وهكذا يعلّم الشرح المدمج في Cheat Engine المؤشرات، ويستحق أن تفعله مرة واحدة لفهم الفكرة. لاحظ أن ربط مصحح الأخطاء قد يجعل بعض الألعاب غير مستقرة؛ احفظ قبل أن تجرب.

التعليمات التي تجدها هنا هي أيضًا نقطة البداية لسكربتات حقن الشيفرة، وهي بديل للمؤشرات يُشرح في دليل أساسيات Auto Assembler.

الخطوة 3: شغّل فحص المؤشرات

تنفيذ كل مستوى يدويًا بطيء، لذلك يستطيع Cheat Engine البحث عن جميع المسارات المحتملة تلقائيًا. انقر بزر الماوس الأيمن على الإدخال واختر Pointer scan for this address. يحتوي مربع الإعدادات على خيارات كثيرة؛ والمهم منها:

  • Address to find: يُملأ بعنوان إدخالك.
  • Maximum offset value: مدى كبر كل إزاحة يُسمح به. القيمة الافتراضية نقطة بداية معقولة؛ ارفعها فقط إذا لم يجد الفحص شيئًا.
  • Max level: عدد المستويات التي يبحث فيها. المستويات الأعلى تجد مسارات أكثر لكنها تستغرق وقتًا أطول بكثير وتنتج نتائج أكثر بكثير. ابدأ بحوالي 5.

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

الخطوة 4: أعد الفحص بعد إعادة تشغيل اللعبة

هذه هي الخطوة التي تجعل فحص المؤشرات ينجح.

  1. أبقِ نافذة فحص المؤشرات مفتوحة، أو أعد فتح ملف .PTR المحفوظ لاحقًا من قائمة ماسح المؤشرات.
  2. أغلق اللعبة تمامًا وشغّلها من جديد. حمّل ملف حفظ.
  3. اربط Cheat Engine مرة أخرى واعثر على العنوان الجديد للقيمة بفحص عادي.
  4. في نافذة فحص المؤشرات، افتح قائمتها واختر خيار إعادة الفحص. أدخل العنوان الجديد كعنوان للبحث وأكّد.

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

خرائط المؤشرات: فحص أذكى

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

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

الخطوة 5: اختر نتيجة وأضفها إلى الجدول

تعرض قائمة النتائج عمودًا باسم Base Address مثل "game.exe"+01A2B3C0، ثم عمودًا لكل إزاحة، والعنوان الذي يشير إليه المسار حاليًا. عند الاختيار بين المسارات الناجية، فضّل:

  • المسارات التي تبدأ في الملف التنفيذي الرئيسي للعبة أو وحدة المحرك الرئيسية؛
  • المسارات الأقصر ذات المستويات الأقل؛
  • المسارات التي نجت من أكثر عمليات إعادة الفحص تنوعًا.

انقر نقرًا مزدوجًا على نتيجة لإضافتها إلى قائمة العناوين. يظهر عنوان الإدخال مع بادئة P-> للدلالة على أنه مؤشر. تحقق من نوعه؛ إدخالات فحص المؤشرات تكون افتراضيًا 4 Bytes، لذا غيّرها إلى Float أو نوع آخر إذا احتاجت قيمتك ذلك. أعطه وصفًا واضحًا واحفظ الجدول.

يمكنك أيضًا إدخال مؤشر يدويًا: استخدم الزر لإضافة عنوان يدويًا، وفعّل خيار Pointer، وضع الوحدة والإزاحة في حقل العنوان الأساسي (مثل "game.exe"+01A2B3C0) وأضف حقلًا لكل إزاحة. يعرض Cheat Engine العنوان الذي يصل إليه كل مستوى أثناء الكتابة، مما يسهّل اكتشاف الأخطاء. انتبه إلى ترتيب حقول الإزاحة في ذلك المربع: الإزاحة التي تُطبق أولًا تقع بجانب العنوان الأساسي.

حدود المؤشرات

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

الخلاصة

  1. اعثر على القيمة وتأكد منها.
  2. استخدم مصحح الأخطاء اختياريًا لمعرفة التعليمات التي تصل إليها.
  3. شغّل فحص مؤشرات بإعدادات معتدلة للمستوى والإزاحة.
  4. أعد تشغيل اللعبة، واعثر على العنوان الجديد، وأعد الفحص. كرر مع جلسات متنوعة.
  5. اختر مسارًا قصيرًا ومتسقًا، وأضفه إلى الجدول بالنوع الصحيح، واحفظ.

التعليقات

٠
رد على

لن يظهر للعامة أبداً.

تتم مراجعة التعليقات من قبل مشرف قبل ظهورها.

لا توجد تعليقات بعد

كن أول من يشارك رأيه.