Туториал по хаку мини-игры Dodo Pizza с помощью JS для тренировки навыков веб-разработки и получения бонусных доткоинов.
Ask about this video. Answers come from its transcript only — with the timestamp, so you can check them.
Generated from the transcript and can be wrong — check the timestamp.
Key Takeaways
- Мини-игры в мобильных приложениях часто реализованы на веб-технологиях и могут быть исследованы через веб-инструменты.
- Инжектирование JS-кода в WebView позволяет перехватывать и подменять взаимодействие между веб-игрой и нативным приложением.
- Максимальное количество бонусов в игре ограничено разработчиками, что предотвращает чрезмерную накрутку.
- Знания о взаимодействии между нативными и веб-компонентами полезны для веб-разработчиков и специалистов по безопасности.
- Использование Chrome DevTools и ADB — ключевые инструменты для отладки и анализа мобильных приложений с веб-контентом.
What the video covers
- Видео демонстрирует, как обычный человек может использовать мастерскрипт для автоматического набора очков в мини-игре Dodo Pizza.
- Мини-игра встроена в Android-приложение через компонент Android System WebView и написана на веб-технологиях (HTML, CSS, JS).
- Объясняется архитектура взаимодействия нативного приложения и веб-игры через объект window.jsbridge с методами pointAdded и gameEnded.
- Показано, как с помощью Chrome DevTools можно подключиться к веб-контексту игры внутри Android-приложения и инжектировать кастомный JS-код.
- Мастерскрипт перехватывает вызовы window.jsbridge и подменяет их на фейковые события, позволяя автоматически набирать максимум 50 доткоинов.
- Разбираются детали событий pointAdded и gameEnded, а также причины проигрыша (lossReason) в игре.
- Видео акцентирует внимание, что цель туториала — тренировка навыков веб-разработки, а не просто накрутка бонусов.
- Поясняется, что подобная архитектура и подходы встречаются во многих мобильных приложениях и сервисах.
- Дается пошаговое объяснение процесса подключения к Android-приложению через ADB и настройки отладки для инжекта кода.
- В конце показывается успешное получение максимального количества бонусных доткоинов с помощью созданного скрипта.
Chapters
- 00:00Введение и демонстрация работы мастерскрипта
- 02:28Архитектура приложения и роль Android System WebView
- 05:01Принцип работы JSBridge и перехват событий
- 07:01Детальный разбор событий pointAdded и gameEnded
- 09:22Инжектирование master script и подмена вызовов
- 14:28Работа с APK и подготовка к инжекту
- 19:10Запуск скрипта и получение максимальных бонусов
Full Transcript — Download SRT & Markdown
Speaker A
Вот насколько это реально обычный человек без читов сможет сделать. Вот, значит, я играю, пока не проиграю, а когда я проиграю, в дело вмешается мой мастерскрипт и, соответственно, продолжит играть за меня. Ну как играть, читерить продолжит. Вот, значит, я уже
Speaker A
практически проиграл. А, итак, 26, 27 и всё. Но вместо того, чтобы проиграть, мы видим, что очки продолжают увеличиваться, увеличиваться. А до тех пор, пока не получится 50 очков.
Speaker A
Барабанная дробь. И да, мы выиграли, и мы получили свои 50 доткоинов. Всем привет. И в сегодняшнем мини-туториале мы рассмотрим процесс хака мини-игры с башней пицц из мобильного приложения Додоza. Для тех, кто не в теме, это просто мини-игра, доступная всем при совершении заказа в
Speaker A
данной пиццерии. Из неё можно получить максимум 50 бонусных доткоинов. А сами доткоины — это бонусы, которые потом можно будет обменять на бесплатную пиццу. А почему я выбрал именно этот пример? Потому что, на мой взгляд, он является очень показательным и полезным,
Speaker A
так как архитектуру и принципы, которые мы разберём, они вам будут встречаться много где, во многих сервисах и приложениях. И цель данного туториала, конечно же, не накрутка бонусов, а именно тренировка ваших навыков по веб-разработке. Потому что, как я уже
Speaker A
сказал, в этой мини-игре разрабы установили максимум 50 доткоинов. То есть больше вы с помощью клиентского хака не нафармите. Ну и 50 получить каждый раз, уж поверьте, нехила, потому что реально даже опытные игроки руками набивают где-то 25-30 очков, то
Speaker A
есть вдвое меньше, чем могли бы. Итак, погнали. Для начала внимательные могли бы задаться вопросом, почему я сказал, что это прокачка навыков по веб-разработке.
Speaker A
Дело в том, что многие игры пишутся на веб-технологиях, компилируемых в HTML, CSS и JS. И потом эти игры встраиваются внутрь нативных приложений, в нашем случае Android приложений. Я специально составил схему для демонстрации этого принципа. Само по себе приложение DOD
Speaker A
Pizza на Андроиде, оно, естественно, написано на Android стеке, то есть Java/Kotlin, но именно мини-игра написана на веб-технологиях, и она встраивается внутрь нативного приложения с помощью специального системного компонента Android System WebView. А это специальный компонент, который позволяет разработчикам Android приложений
Speaker A
встраивать внутрь себя веб-страницы. И в данном случае оно так и работает. И, поверьте, работает не только здесь, а также во многих других сервисах, как я уже сказал. А то, что нам нужно понимать в контексте данного кейса — это то, что
Speaker A
Android приложение, поскольку оно является нативным и открывает внутри себя веб-приложение, то оно может встраивать в этот веб-контекст свои объекты. И в данном случае приложение DOD Pizza создаёт специальный объект JSBridge и пробрасывает его внутрь в web environment. И дальше этот объект
Speaker A
доступен через window.jsbridge. И у этого JSBridge в данном случае есть два метода: pointAdded и gameEnded. То есть непосредственно один создан для того, чтобы сообщить о том, что очко добавлено, а второй необходим для того, чтобы сообщить, что игра завершена.
Speaker A
Таким образом осуществляется передача информации, то есть нативное приложение пробрасывает внутрь веба свой объект, и дальше веб-приложение может обращаться вот к этим методам pointAdded и gameEnded, чтобы сообщить нативному приложению, что было добавлено очко или что игра завершена.
Speaker A
То есть вот как это выглядит и как же мы планируем в этот процесс вмешаться. А мы это планируем сделать очень простым способом, который изображён вот на этой схеме. А раз вот эта сама игра, она представляет собой web environment, то есть
Speaker A
веб-контекст, то это значит, что мы к нему можем подключить инструменты веб-разработки, а именно Chrome DevTools. И да, у Chrome DevTools есть замечательная возможность, а что она может подключаться, то есть создавать удалённую сессию отладки с любым приложением, веб-приложением, которое
Speaker A
открыто внутри Android System WebView. То есть она устанавливает это соединение. Сейчас мы рассмотрим, какие условия должны быть соблюдены для того, чтобы Chrome DevTools смог подцепиться к веб-приложению, открытому внутри какого-то другого Android приложения. А, но если это соединение установлено, то
Speaker A
мы можем инжектировать свой кастомный JavaScript код и пробросить его внутрь web environment, в котором открывается сама мини-игра. И после того, как мы это сделаем, наш скрипт может перехватить, недолго думая, window.jsbridge, заблокировать его вызовы. Оригинальное приложение, то есть оригинальное приложение будет
Speaker A
пытаться вызывать window.jsbridge, и оно не сможет ничего сделать, потому что мы его перехватим. А вместо этого наш скрипт, который я здесь назвал master script, он будет генерировать фейковые события pointAdded и gameEnded.
Speaker A
То есть фактически Android приложение Dodo Pizza будет получать не настоящие сигналы от веб-приложения с мини-игрой, а будет получать наши фейковые, которые будет генерить наш инжектированный скрипт. А, то есть вот в чём заключается, собственно говоря, хак. Теперь же давайте рассмотрим более
Speaker A
подробно, собственно, что это за события такие pointAdded и gameEnded. Для этого я создал ещё одну диаграмму. Значит, событие pointAdded — это простейшее событие, которое отправляет веб-приложение с мини-игрой, отправляет основному Android приложению. Ну вот на данной схеме они изображены как две
Speaker A
разные сущности, но опять же вы должны помнить, что это по сути веб-приложение открывается внутри Android приложения и оно обменивается с ним информацией.
Speaker A
Вот. А что же оно делает? Как я уже сказал, есть два метода window.jsbridge: pointAdded и gameEnded. И наше веб-приложение обращается к этим методам и передаёт им вот такие объекты, в которых указаны очки. А рядом с очками
Speaker A
также количество, сколько мы выиграли, но оно по сути рассчитывается по такой формуле с коэффициентами единицы, что они, как правило, всегда одинаковые. То есть разработчики их просто добавили на случай, если вдруг эти коэффициенты поменяются, чтобы гейм-дизайнеры могли эти параметры менять. А это pointAdded, то
Speaker A
есть когда башня и пицца увеличилась на единицу, соответственно, то есть человек успешно её поставил, данное веб-приложение вызывает метод window.jsbridge pointAdded и передаёт текущее количество очков. А, ну и, соответственно, когда пользователь уже наложался, когда у него упала башня,
Speaker A
либо он неправильно поставил блок, соответственно веб-приложение генерирует уже событие gameEnded, вызывает метод window.jsbridge gameEnded и передаёт ему финальное количество очков, score, rewardCount и также lossReason. Это специальный код, который кодирует то, как именно человек облажался. То есть 0 — это значит игра была прервана.
Speaker A
Один — это значит gone screen, значит блок пролетел мимо. Два — это no overlap, это значит, что он промахнулся.
Speaker A
И третье collapse, значит, башня разрушилась. То есть, ну, lossReason мы всегда будем фиксировать на двойке. Это самая стандартная причина проигрыша. Ну, а когда мы в этот процесс вмешаемся, разумеется, мы между веб-приложением и Android приложением поместим свой
Speaker A
инжектированный master script. И этот master script он будет перехватывать объект window.jsbridge pointAdded и window.jsbridge gameEnded. И таким образом игра не сможет достучаться больше до Android приложения. Оно не сможет вызвать эти методы, точнее, сможет, но они будут наши переопределённые. И
Speaker A
вместо этого наш скрипт будет сам вызывать настоящие методы pointAdded и gameEnded и передавать им фейковые параметры. То есть он будет каждый энный промежуток времени генерировать увеличение очков, то есть вот это событие, и в конце сгенерирует вот такое событие. То есть
Speaker A
для Android приложения будет всё, как будто бы человек играет. На самом деле мини-игра уже давно закончилась, но событие о том, что оно закончилось, было перехвачено нашим middleware JS скриптом.
Speaker A
Вместо этого наш JS скрипт будет генерить фейковые события, что якобы игра всё ещё идёт, очки добавляются, и в конце он же этот самый скрипт сгенерирует финальное событие о том, что мы заработали 50 очков и rewardAmount 50. Мы молодцы.
Speaker A
Вместо этого наш JSрип будет генерить фейковые события, что якобы игра всё ещё идёт, очки добавляются, и в конце он же этот самый скрипт сгенерирует финальное событие о том, что мы заработали 50 очков и реварда мауountт 50. Мы молодцы.
Speaker A
То есть вот такая вот э архитектура, которую мы будем применять в данном уроке. И прежде, чем непосредственно уже переходить к практике, а я как раз-таки хотел бы рассмотреть пререквизиты, то есть что необходимо для того, чтобы установить вот это самое VVW
Speaker A
remote debugging соединение, чтобы заставить Chrome def Tools подключиться к Android System Webview, вот к этому webironменту, который открыт внутри другого Android приложения. И для того, чтобы это webview remote debugging соединение установилось, необходимо две вещи. Они изображены здесь. Первое - это
Speaker A
USB, а, то есть ваш Android смартфон должен быть подключён с помощью отладки по USB к вашему ПК. Ну и у вас, естественно, на ПК должен стоять полный комплект Java SDК и Android SDК. А, чтобы вы могли вызывать команды оттуда и
Speaker A
также, чтобы они были добавлены в переменную Ph, разумеется, чтобы вы могли из командной строки к ним обращаться. [фыркает] А вот у вас USB баugгинг сессия а должна быть. И второе, а это политика безопасности андроида.
Speaker A
Дело в том, что Android - это собака хитрая, и, естественно, она не даст, а, произвольному defзо обращаться к любому веб-view, который открыт в каком-то левом Android приложении. Android требует, чтобы само Android приложение разрешило вот так вот через себя
Speaker A
проходить, чтобы, а, вот эти самые веб-виvюсы, чтобы к ним можно было подключиться. Android приложение должно вызвать специальный метод webview set web contents debugging enable true. И причём этот метод, поскольку он, а, необходимо, чтобы его вызвало Android приложение, он должен вызываться вот
Speaker A
отсюда из Android envirймента. То есть само приложение в данном случае додупиiz должна этот метод вызвать со значением true, то есть разрешить вот так вот подключаться к созданным вебюсам внутри себя. Но, разумеется, приложение это не идёт. Оно не будет вызывать этот метод,
Speaker A
поэтому нам необходимо вызвать этот метод за приложение. То есть нам необходимо проинжектироваться туда и искусственно вызвать данный метод, чтобы Android разрешил, а, нашему Дафтузу подключиться к созданным внутри данного приложения вебвисам. И существует два способа заставить Android приложение вызвать вот этот метод. А, первый
Speaker A
предполагает наличие rootправ, второй не предполагает. Ну, во-первых, вне зависимости от способа. Первое, что вам нужно будет сделать - это, а, скачать специальный модуль. Вот он, а, который уже давным-давно был написан, суть которого в том, чтобы как раз-таки от
Speaker A
имени приложения вызвать необходимый метод, разрешающий удалённую Def Tools отладку. Различается лишь способ доставки этого модуля. В первом случае мы инжектимся напрямую через ls post в так называемую зиготу. Дело в том, что кто не знает, Zigot - это специальный родительский
Speaker A
процесс, с которого начинаются в Андроиде все приложения. И мы можем как раз в неё заинжектить вот этот модуль с помощью установленного LS Post. Это стандартный процесс, но для этого нам нужны rootправа. Преимущество данного подхода в том, что он более чистый,
Speaker A
потому что при таком способе инжекции ак файл самого приложения доду пицц остаётся неизменный. просто в её зиготу инжектируется модуль, который вызывает необходимую команду, и Android разрешает вот такое подключение. Всё. При этом APK файл остаётся нетронутым. А, но, соответственно, он требует rootправ,
Speaker A
который сейчас получить не так просто, как во времена четвёртого, пятого Андроида. А, поэтому я специально добавил второй способ, а, который предполагает изменение самого AP файла допиц. А, то есть раз мы не можем доставить данный модуль напрямую через lspost, то мы должны его тогда вшить в
Speaker A
сам APK файл doпи, чтобы он вызвался а при старте приложения. И для этого здесь уже используется не LS POST, а специальный похожий модуль LS Patch, который и был сделан для того, а чтобы можно было у тех, у кого нет rootправ,
Speaker A
чтобы в любое Android приложение, в любое APK можно было вшить любой lspost модуль, и он уже будет инжектироваться не в зиготу, а непосредственно в сам APK файл. И дальше просто переустановить его из модифицированного AP файла. И тогда уже получается, что у вас будет не
Speaker A
оригинальное приложение Додо пица, а немножко модифицировано. То есть вы сделаете апек, и в этом репеке в самом начале будет вызван вот этот самый модуль, тот же самый, который вызовет необходимую команду, и после этого вы сможете подключаться.
Speaker A
Вот. А и в данном случае, поскольку у многих, я предполагаю, что может не быть рутированного телефона, а то я как раз буду использовать как основной именно вот этот способ с модификацией АК файлов.
Speaker A
А хоть имейте в виду, что он не везде может работать, потому что опять же, когда вы вмешиваетесь в APK файл, это легче задетектить потенциально, чем когда вы инжектитесь в зиготу. И также для тех, кто, может быть, не знает, я
Speaker A
тут тоже кратко пробегусь по тому, как можно активировать отладку по USB. А для этого нужно активировать так называемые developer options. Если у вас их ещё нет, нужно зайти в информацию об андроиде, о телефоне, нажать несколько раз на build number. У вас
Speaker A
разблокируется dev options. Нужно зайти в developer options, найти там параметр USB, активировать его. А также там может быть ещё другие опции по ad типа установка приложений. Их все нужно также активировать, например, на Xiaomi. После этого вы подключаетесь к ПК, а
Speaker A
разрешаете передачу файлов. Потом со своего ПК, после того, как вы подключили по USB, уже активировали передачу файлов, вы должны инициировать, а, adB соединение. Вы прямо пишете adB. Если у вас установлен, а, Android SDK и он корректно прописан в Path, то команда
Speaker A
AdB будет считываться. Вводите команду AdB devices, и в первый раз он может показать unauthorized, то есть не авторизованный. А после того, как вы вбили данную команду на ПК, на телефоне должно высветиться вот такое предупреждение, что разрешить ли откладку по USB. Вы нажимаете окей. И
Speaker A
после этого при повторном вводе к команде AdB devices вы уже увидите не unauthorized, а то, что ваш девайс реально подключён к ПК. То есть классический процесс включения отладки по USB. Если у вас какая-то особая экзотическая модель Android смартфона,
Speaker A
то можете найти инструкцию, а, конкретно для себя в сети. Но в целом этот процесс выглядит вот таким вот образом. И после того, как вы активировали отладку по USB, то есть первый пункт требований для установки вот этого самого соединения вы
Speaker A
выполнили. И остаётся вам, а сделать так, чтобы Android приложение вызывало метод разрешающий подключения DEF Tools к Weview и, соответственно, модифицировать APK файл. То есть давайте сейчас как раз к этому перейдём. И первое, что нам необходимо сделать - это
Speaker A
скачать вот эти два инструмента LS Patch и View Debug Hook. У обоих из них есть свои репозитории на GHubбе. Актуальные ссылки на них я, естественно, приложу. А для того, чтобы скачать ls patch, здесь достаточно перейти в relases и скачать
Speaker A
файл lspatch. То есть есть, конечно, и APK версия, если вы хотите работать с Андроида, но я хочу работать прямо с PK, то есть я скачиваю Java версию данного патчера. А второе - это непосредственно сам LS POST модуль. И он тоже здесь скачивается вот
Speaker A
по вот этой вот ссылке debughook.apk. Скачиваете первый файл, второй файл, складываете их в одну папку, а и переходим дальше непосредственно к модификации. Вот я их уже сложил. У меня есть отдельная папка, в которой я положил lspatch.jarvbughook apk. Также сюда я положил masterpt.
Speaker A
непосредственно материпt я тоже прикреплю в Telegram-канале, разумеется, мне же нужно что-то подписчикам скинуть. Таким образом, ссылка на этот пост будет в описании. Можете также матеррипt себе загрузить. Это тот самый скрипт, который мы будем инжектить. Вот. Но для модификации AP файла он пока что нам не
Speaker A
нужен. И кроме того, также у меня есть здесь два файла с инструкциями. А какие инструкции вводить для модификации АК файла? Сейчас мы к этому как раз и перейдём. Один из них для ш среды, если у вас Linux или Mac. Второй для Power
Speaker A
Shell, если у вас Windows. И, естественно, эти файлы тоже будут прикреплены в посте Telegramканале.
Speaker A
Итак, поехали. Давайте я открою консоль, а терминал. В моём случае я работаю на Windows, и у меня терминал PowerSell.
Speaker A
Соответственно, я буду работать с командами для Powerell. А, и параллельно на Андроиде я зайду, перейду в Play Market и, соответственно, скачаю само приложение Доду Pizz. А первое, что нам необходимо сделать перед тем, как модифицировать AP файл, нам нужно этот AP файл достать. А,
Speaker A
соответственно, вместо того, чтобы искать его в интернете, мы просто его достанем непосредственно из самого телефона. Итак, пока он у меня скачивается, я сразу подключу его по USB. Итак, я его подключил. Также убеждаемся, что у вас активировалось USB debugging он on. А также можно
Speaker A
опционально, а, подключить передачу файлов, потому что иногда отладка по USB требует этой опции, чтобы у вас вы инициировали передачу файлов. Итак, вот у меня DOD пицца установилась на моём девайсе. Я подожду, пока вот этот вот Xiaomi Security пройдёт. Отлично. Переходим
Speaker A
назад. А также не пугайтесь, у меня здесь установлен LS Post, потому что мой телефон рутированный, а, но вам это не помешает в данном случае. Если же у вас тоже есть rootправа то соответственно модификацию AP файла вы можете просто
Speaker A
скипнуть. Итак, поехали. Вот я его вроде как подключил. Теперь как убедиться, что действительно USB баггинг подключён, потому что иногда он всё равно пишет, что подключён, а на самом деле не подключён. Для этого в консоли я могу вбить первую команду advis. А для того,
Speaker A
чтобы пользоваться данной командой, убедитесь, что у вас стоит Android SDK, что он у вас установлен и что он правильно прописан в PS, чтобы вы могли вот к таким утилитам обращаться. После того, как вы это вобьёте, у вас высветится, что девайс подключён, либо
Speaker A
он, как мы уже рассматривали, выпишет unauthorized. Вы тогда должны принять со своего смартфона предупреждение нажать окей. И тогда при повторном вбити adbices вы увидите здесь девайс. После того, как вы видите, что девайс у вас здесь отображается, значит, соединение
Speaker A
установлено. То есть вот этот вот первый пункт, о котором мы говорили, вот этот USB багинг, он у вас выполнен. А теперь переходим к модификации AP файла. А и для этого мы должны для начала получить весь список пакетов, установленных на
Speaker A
телефоне, и найти в нём доду пиццу. Значит, копируем вот эту вторую команду, нажимаем. Естественно, мы здесь выполняем сразу же поиск по имени Додо, чтобы из этого большого списка сразу получить то, что нам нужно. Итак, вот получаем вот название нашего пакета
Speaker A
r.pizza. И дальше мы должны а получить непосредственно путь, то есть где лежит акфайл на самом смартфоне. Мы копируем следующую команду а Ctrl C, Ctrl V и убеждаемся, что вот это название пакета совпадает вот с этим. Ну, то есть я его,
Speaker A
в принципе, отсюда взял. Если оно вдруг поменяется, то вы новое копируете вот отсюда, вставляете сюда. То есть Adbell PMP как раз команда для того создана, чтобы можно было увидеть путь к ак файлу для любого установленного на вашем смартфоне пакета. Нажимаем, получаем
Speaker A
здесь три APK файла. И у вас здесь может возникнуть вопрос, почему этих APK файла три? Base APK и какие-то два split APK файла. Дело в том, что это современный стандарт, который называется Split APK, а который предполагает, что магазины
Speaker A
приложений типа Племаркета, они не хранят все приложения единым ак файлом, они их дробят. Соответственно, в данном случае у вас скачается три ак файла, как у меня, и патчать нам нужно все три. Вот это надо иметь в виду. То есть раньше было, что любое
Speaker A
приложение представлено лишь одним ак файлом, но в данном случае современные магазины приложения их дробят, поэтому мы здесь имеем их три. и нам необходимо все три себе подтянуть. А, отлично. Для этого переходим к разделу два. А, создаём папку Додо. Ну, либо вот тут вот
Speaker A
просто можно через UI создать, либо просто скопировать команду, текущую папку, и у меня создастся папка Додо пустая. Туда мы будем как раз и складывать наши извлечённые аклы, а впоследствии и модифицированные. Дальше нам нужно всё это подтянуть. Нам нужно
Speaker A
сделать adпулol. А adпol, команда, которая как раз-таки перетягивает какой-то файл с вашего смартфона на ваш ПК. То есть в данном случае нам нужно перетянуть base APK файл и сохранить его в папке dodo/base apk. Значит, я копирую полученный путь. Он может быть
Speaker A
уникальным, вы должны копировать у себя сами, а также убеждаться, что вот эти сплиты, они также соответствуют тому, что будет. Значит, я копирую это сюда.
Speaker A
Вот я достаю, получается, вот такой файл base APK, сохраняю его у себя в папке додо, вот здесь base APK. Нажимаю Enter, происходит стягивание файла 100%, и мы его здесь получаем. Всё, первый файл мы перетянули. А теперь таким же макаром а
Speaker A
я должен в целом перетянуть и все остальные. Ну, только когда будете вот отсюда копировать, вот делать adпулol, а убедитесь, что вот эти вот названия также соответствуют тому, что вы здесь имеете. Потому что, например, у меня ARM 64 V8, а вдруг у
Speaker A
вас будет другое? Потому что, если у вас там, например, каким-то образом будет другая система, он может вам другой подтянуть автоматический файл. То есть вы должны смотреть по тому, что у вас здесь вышло. Вот так вот. Значит, второй файл мы перетянули. И теперь то же самое
Speaker A
нам нужно перетянуть третий файл. А, нажимаем Enter. Всё, у нас перетягивается третий файл. И в папке Dodo у нас получается три ак файла. Все они представляют собой одно приложение Dodo Pizza, которое мы себе установили из плеймаркета. А следующий шаг, нам
Speaker A
нужно непосредственно его пропатчить. То есть мы создаём новую папку патed внутри папки Додо через UI, либо через ту команду, которую я вам предоставил, то есть New Directory. У нас появляется пустая папка паchт и следующая команда как раз ответственна за непосредственно
Speaker A
патчинг. Вот здесь аккуратно копируем её из файла, вставляем. И на что следует обратить внимание? Во-первых, на то, что у вас должна стоять Java, поскольку ls patch - это программа, написанная на Java. Как видите, она имеет преfиixс jar. Соответственно, для того, чтобы её
Speaker A
запустить, нам необходима установленная Java. Ну, в случае, если вы работаете с Андроидом, она у вас и так должна стоять. Тут то же самое, что и с Андроидом. Мы не будем сейчас на этом зацикливаться. Огромное количество гайдов по установке Джавыa и Android
Speaker A
SDG. Значит, мы лишь вбиваем команду, которая запускает ls patch и скармливает ему все три ак файла, которые мы только что стянули. Base AP, а сразу же идёт сплит один и сплит второй. И вот так вот она их сразу же ему скармливает. Дальше
Speaker A
она говорит ему, в какую директорию сделать вывод. Dodo patched, та самая пустая папка, куда он должен вывести пропаченные все три файла. И также какой модуль надо вшить. То есть вшить нужно модуль VIBook, тот самый, который отвечает за вызов того самого метода для
Speaker A
разрешения VVW отладки. Ну и также некоторые служебные флаги, которые рекомендуется добавить, например, обход проверки подписи. Вот это не панаце, но считается хорошей практикой.
Speaker A
Нажимаем Enter. У нас начинает работать утилита ls patch. Ей требуется какое-то время. И как мы видим, всё, она создала три модифицированных файла и поместила их в ту папку, которую мы ей указали, то есть в папку паchт. Всё. И у нас
Speaker A
появилось те самые три файла, только теперь с префиксом ls patch. И теперь нам нужно перейти к последнему шагу.
Speaker A
Удалить наше оригинальное приложение DOD Piza, которое мы поставили из пле маркета, и поставить новое, пропатченое на основе вот этих трёх AP файлов.
Speaker A
Соответственно, первый пункт - это удаление. Вы можете сразу сделать adbstall, он удалит приложение, то есть в плеймаркете сразу высветится, что оно удалено. И теперь его нужно поставить, то есть выполнить последнюю команду adb install multiple и скормить ему все
Speaker A
пропатченные три файла. Ctrl C, Ctrl V. Опять же убеждаетесь, что вот эти файлы, которые вы ему скармливаете, AdB Install Multiple Fl R, все вот эти три из папки патчит, что они соответствуют названиям, которые указаны здесь. В качестве профилактики можете просто эти поля
Speaker A
очистить, если они у вас называются. Если вы заметили, что название файлов другие, просто сразу тогда из той команды, которую вы здесь копируете, вот отсюда вы очищаете пути к модифицированным файлам и тогда вставляете их уже по факту, какие они у
Speaker A
вас получились. Например, вот первый ак файл у меня вот такой. Я нажимаю правой кнопкой мыши copy relative P, то есть скопировать относительный путь, то есть путь относительно корня директории, где я сейчас нахожусь. Вот. И получаю то же самое. Dodo, patch и название файла. То
Speaker A
же самое с вторым копия relative Ps. И вторым аргументом я его вот сюда вставляю. И третий аналогичным образом.
Speaker A
Copy relative pass. А ctrl V. Всё. И теперь у меня в Adb install multiple идут пути к нормальным тем файлам, которые реально, а, получились в пропаной папке. Я нажимаю Enter, и у меня выполняется установка. А если у вас
Speaker A
к Xiaomi и ещё другая строгая прошивка, то она так просто не установится. Вы должны подтвердить, то есть нажать на телефоне в этот момент installл. только после того, как вы нажмёте, он выведет акцесс. Если вы не нажмёте, он, соответственно, не установит всё. То
Speaker A
есть на данный момент всё готово. Мы успешно установили у себя пропатченную доду пиццу, с которой и можем дальше работать. Теперь, а как убедиться, что вы все вот эти шаги проделали правильно?
Speaker A
Что вы правильно модифицировали? Что вы правильно удалили, поставили? А что всё работает? Значит, давайте зайдём в нашу модифицированную додупицу, которую мы только что установили. Значит, имейте в виду, что она изначально может закрыться. То есть вот я её запустил,
Speaker A
она, смотрите, вылетела. Это нормально. Нажимаем ещё раз. А объясню, почему она вылетает. Дело в том, что опять же мы переходим к тому, что метод ls patch, который мы здесь рассматривали, он довольно-таки багованный, и вы должны иметь в виду, что какие-то части
Speaker A
приложения могут отвалиться, а более серьёзные типа банковских, они вообще могут такое задетектить легко и вас не пустить. А, но нам в данном случае это не критично. А, то есть мы, если видим, что она вылетает, мы нажимаем ещё раз,
Speaker A
вот, и она теперь запустится. Ну, допустим, я ему запрещаю геолокацию. Теперь смотрите, следующий прикол.
Speaker A
Поскольку мы с вами выполнили модификацию АК файла, то карта, которая загружается в DU пиц, она теперь у нас не прогружается. А это нормальная ситуация, потому что вот этот модуль гугловский, он видит, что приложение поменялось, то есть у него другая
Speaker A
подпись. Вот это обход проверки подписи, который был у нас вот здесь вот этим флагом указан, он не помог. То есть Google хитрее оказался, и данная карта не прогрузилась. Но а нам это тоже абсолютно не мешает, потому что вы
Speaker A
можете вбить сюда, э, собственно говоря, адрес руками, то есть вы не не обязаны его выбирать здесь на карте. Здесь есть такой нюанс, что иногда вот это поле с адресом, оно может забаговаться. Если вы не можете на него нажать, то как из
Speaker A
этого бага выйти? Нужно вот эти вот вкладочки наверху а просто попереключать вот туда-сюда. всё это дело до don't.
Speaker A
Вот туда-сюда переключаете. И после этого у вас вот это поле станет активным. И здесь вы уже можете сами вбить тот адрес, который хотите. Ну, скажем, я не знаю, куда. Ну, допустим, всё. То есть вы вбиваете тот адрес, который вам надо. Кар, то, что карта
Speaker A
недоступна, здесь абсолютно не влияет. Нажимаете continue. Всё, у вас приложение а прогружается. И после этого можно идти дальше. И последний шаг, который вам необходимо сделать для того, чтобы убедиться, что всё хорошо - это открыть в хроме тот самый Chrome
Speaker A
Inspect, который отвечает за удалённый def to Tools. А значит, зайти сюда и открыть при этом с подключённого телефона какую-нибудь историю. Например, я вот эту открою. И после того, как история прогрузится, значит, я её давайте на паузу поставлю вот так вот
Speaker A
тапом, а, и обновлю страницу в Хроме. И теперь мы должны убедиться, что он видит и что он пробрасывает веб-виьсы из вашего приложения сюда. И как вы видите, всё работает в моём случае. Webview in Dodo pizza Up. Он его успешно
Speaker A
задетектил. И вы теперь можете нажать Inspect. И у вас открывается вуаля, у вас открывается удалённый DEOLS, который подключён непосредственно к вебвису, открытому внутри мобильного приложения.
Speaker A
То есть вот если вы видите вот это, значит, вы всё сделали правильно. у вас пробрасывается отлатчик. То есть то же самое, когда мы сейчас перейдём к игре, это значит, что у вас пробросится игра точно так же. И вот сюда в консоль вы
Speaker A
сможете инжектить свой код. То есть после этого историю можно закрыть, всё, и переходить к последнему шагу, к инжекции а мастер срипта. Итак, я уже сделал тестовый заказ из нашего модифицированного приложения. И теперь, как вы видите, нам открылась возможность
Speaker A
сыграть в заветную мини-игру. А, кроме того, отсутствие подгрузки модуля Google карты нам абсолютно никак не мешает.
Speaker A
Впрочем, если вы инжектитесь, как положено, через root доступ ls, то у вас из Google карты не будет никаких проблем. Итак, наконец-то, давайте запустим игру, кликнув по соответствующей иконке. Прогружается игра, и смотрите, вы встретитесь вот с такой заставочкой. Ни в коем случае сразу не
Speaker A
нажимайте Play. Нам нужно сначала заинжектить Masterc. И параллельно в вашем Хроме вы увидите, что Pizza Tower Game наконец-то появится в списке вебьюсов, к которым можно подключиться.
Speaker A
Если оно у вас не отображается, можете обновить вкладку и подождать, и он её обязательно увидит. Нажимаем Inspect, и вы увидите, что Webview с игрой успешно транслируется к вам в Chrome Death Tools. А, ни в коем случае не нажимайте Reload, разумеется, чтобы
Speaker A
ничего не сломать. И это идеальное время для того, чтобы заинжектить тот самый Masterптt, о котором я говорил. По сути, вы его просто копируете и вставляете в консоль def toлза к необходимому вебвиьсу.
Speaker A
Как вы видите, мы здесь перехватываем тот самый JZ Bridge, зануляем по сути метод game ended, чтобы сама игра не могла завершиться, и также перехватываем point Ad, чтобы поймать момент легитимного первого очка. А, кроме того, здесь есть параметр, который отвечает за
Speaker A
максимальное количество очков, которые мы хотим нафармить. Я поставлю себе 49, потому что я уже 50 ставил. Я не хочу, чтобы у меня одновременно было 5050, потому что это может быть палевно. Но вы можете поставить любое очко. А теперь
Speaker A
как проверить, что всё пошло успешно? А вы можете скопировать Windows Bridge и убедиться, что в нём находятся ваши подменённые методы. Что в Gameended пустой метод, а в point AD тот метод, который подменяется мастер скриптом. А в оригинале, если бы маррипt мы не
Speaker A
заинжектили, то и там, и там вы бы увидели преfix native cod. То есть означает, что метод немодифицированный.
Speaker A
Но в нашем случае всё хорошо, и мы, наконец, можем нажать Play. А дальше можно набрать какое-то количество очков, критично набрать первое очко. Ну вот я, например, набрал три и остановился, но, как вы видите, очки продолжили набиваться.
Speaker A
Почему? Потому что отрабатывает сейчас наш тот самый матерскрипт, который мы заинжектили. У него есть специальный раздел, который отвечает за симуляцию.
Speaker A
И он же, этот раздел симулирует необходимые события point Aded и Gameended в конце. Вот он Start Simulation.
Speaker A
А он, соответственно, отсылает все необходимые сигналы а нативному Android приложению. И Android приложение думает, что игра всё ещё идёт. Теперь давайте посмотрим, что будет, когда дойдёт до соро9. Барабанная дробь.
Speaker A
И мы выиграли 49 очков, ровно как и было записано в мастерскрипте. Мы можем нажать клейм и получить соответствующую награду. Миссия успешно завершена. И чтобы не быть голословными, давайте сделаем ещё одну попытку уже на другом заказе, а с той же самой тактикой, как
Speaker A
мы делали. Ждём, пока появится приложение в списке веб-виьсов, которым можно приотачиться. Как только это произошло, нажимаем Inspect. И вставляем в консоль открытого деф-тулза наш master. Вот как он есть. А, и здесь уже вместо 49 ставим 50, да, играем
Speaker A
по-крупному. Вот. Нажимаем, естественно, enter script инжектится. И далее мы уже можем начать play. И нам важно поставить хотя бы одно очко. Но давайте я попробую по максимуму, а, собрать эту башню.
Speaker A
Вот насколько это реально обычный человек без читов сможет сделать. Вот, значит, я играю, пока не проиграю, а когда я проиграю, в дело вмешается мой мастерскрипт и, соответственно, продолжит играть за меня. Ну как играть, читерить продолжит. Во, значит, я уже
Speaker A
практически проиграл. А, итак, 26, 27 и, и всё. Но вместо того, чтобы проиграть, мы видим, что очки продолжают увеличиваться, увеличиваться. А до тех пор, пока не получится 50 очков.
Speaker A
Барабанная дробь. И да, мы выиграли, и мы получили свои 50 доткоинов. В принципе, я мог бы даже и не играть до того момента. Главное здесь поставить одно очко, потому что наш маерпт ждёт момента, когда будет поставлена хотя бы одна пицца и дальше
Speaker A
вмешивается и продолжает симулировать игру. Также, если зайти в раздел с наградами, то, разумеется, все они тут будут отображаться. Всё, что мы нафармили с мастерскриптом - это настоящие бонусы, а никакой не визуальный глич. Ссылка на Telegram-пост со всеми асетами будет, естественно, в
Speaker A
описании. Если вам нравится такой контент, то можете подписаться на YouTube канал, на Telegram-канал или на Boе. Надеюсь, данное видео было вам полезно. Всем удачи. Всем пока. y
Topics:Dodo Pizzaмини-играхакJavaScriptвеб-разработкаAndroid System WebViewChrome DevToolsинжектирование кодабонусыдоткоины











