جوجل كذبة أبريل الهندسة العكسية



ربما لاحظ أحدكم أنه في 1 أبريل ، أضافت Google اللعبة التفاعلية "Snake" إلى تطبيق خرائط Google لنظامي Android و iOS.

عادةً ما يكون اختصاصيو Check Point مشغولين بالبحث في أحدث التهديدات السيبرانية ، لكنهم كانوا مهتمين جدًا بهذه اللعبة ، على الرغم من أنهم كانوا منزعجين جدًا من الخسائر ... لذلك ، نشأت فكرة منطقية: لماذا لا نقضي عليها!

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





في هذه المذكرة ، وصفنا بالتفصيل الاختراق.

أولاً ، قمنا بفتح التطبيق على الجهاز الظاهري من خلال Genymotion وأطلقنا "Snake" ، الموجود في القائمة في الزاوية اليمنى العليا.

يبدو أن اللعبة معروضة في WebView ، لذلك بدأنا في تصحيح الأخطاء عن بُعد في أدوات مطوّر برامج Chrome:



ثم ذهبوا إلى الموقع ووجدوا ملف v18.js في علامة تبويب المصدر ، وكان يحتوي على العديد من الوظائف المثيرة للاهتمام.

أولاً ، تبدأ الدالة fa () في حقل 20 × 20:

this.height = this.width = 20; 

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



يبدو أن F (a ، b) يتحقق مما إذا كانت إحداثيات جسم الثعبان موجودة داخل الحقل. يتمثل أحد الخيارات في إزالة الشروط في الوظيفة تمامًا بحيث تقوم دائمًا بإرجاع الحقيقة ، وبالتالي نقلنا إلى "نظام الله" ، حيث يمكننا المرور عبر الجدران دون أن نموت.

للقيام بذلك ، ضغطنا على زر الفحص في وحدة التحكم عن بعد وقمنا بتغيير الوظيفة F (a ، b) إلى ما يلي:



الآن يمكننا أن نذهب من خلال الجدران:


التين. 1. وضع الله

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

هناك العديد من المكالمات إلى wa (a) في مكدس الاستدعاءات. إذا درسنا هذه الوظيفة ، فسنرى أنها متكررة ومسؤولة عن الاستعلام عن إطارات الرسوم المتحركة. wa (a) يستدعي الدالتين xa (a، b) و ya (a) ، اللذين يعرضان قطع اللعبة (تدريب ، أشخاص) والحقل ، على التوالي.

النظر في وظيفة xa (أ ، ب) :



يستغرق حجتين: 'أ' و 'ب'. الأول هو جزء من المتغير العالمي Q ، الذي يحتوي على معلومات مثيرة للاهتمام حول لعبتنا ، بما في ذلك مجموعة تمثل ملعبًا (الشكل 2) ، حيث نرى قطارًا (M) والأشخاص والأشياء (K). تقوم الوظيفة أيضًا بحساب النتيجة وتخزينها في ci ، وهو ما يعادل أيضًا Qb


التين. 2. مجموعة من الملعب

هذا الصفيف يتوافق مع هذا الحقل:


التين. 3. الملعب

يشير xa (a) أيضًا إلى الدالة sa (a) في الشكل. 4 ، والذي يولد إحداثيات عشوائية في كل مرة يتم إنشاء شخص جديد. إذا قمت باستدعاء الوظيفة أكثر من مرة ، يمكنك إنشاء أكبر عدد تريده من الناس (الشكل 5).


التين. 4. استدعاء وظيفة سا (أ)

مثل هنا:


التين. 5. وظيفة الدعوة مع إنشاء أي عدد من الناس على الخريطة

يرجى ملاحظة أنه حتى إذا اتصلت بـ sa (a) أكثر من مرة وأخذت الشخص ، فإن النتيجة لا تتغير. عند اختيار أحد الركاب ، تكون الوظيفة ka (a، b) في الشكل. 6. وبالتالي ، يجب تغييرها بحيث تضيف 10 نقاط وتحديث النتيجة على الشاشة مع كل مكالمة.


التين. 6. ميزة محدثة

يشار إلى إحداثيات كل جزء من القطار في Qbob ، حيث العنصر الأول هو أول مقطورة في القطار.


التين. 7. مجموعة من العربات

ستكون هناك حاجة لإنشاء AI بسيط. لنبدأ بمنطقه:


التين. 8. منطق الذكاء الاصطناعى

الأفعى عبارة عن آلة حكومية (آلة حكومية):

  1. في X = 19 ، نذهب إلى الأسفل حتى نصل إلى Y = 19.
  2. في X = 19 و Y = 19 ، انتقل إلى اليسار إلى X = 0.
  3. نمرر إلى آلة الدولة ل zigzags:
    1. لأعلى خلية واحدة وإلى اليمين إلى X = 18.
    2. لأعلى خلية واحدة واليسار إلى X = 0.
    3. العودة إلى الخطوة أ
  4. في Y = 0 ، انتقل إلى اليمين = X = 19.
  5. العودة إلى الخطوة 1.

يتم نشر الرمز الكامل على جيثب .

فيديو:

Source: https://habr.com/ru/post/ar446920/


All Articles