На Блозі було вже багато статей про створення ботів, але всі вони були реалізовані як автоматизовані клікери. Ми ж підійдемо з іншого боку, наш бот буде зчитувати змінні з гри і відсилати пакети сервера.
дослідження
Отже, гра для якої буде писатися бот - TimeZero, написана на ActionScript 2.
Нам знадобиться
- клієнт гри
- Adobe Flash CS5.5
- WPE PRO
- Flash Variable Scanner
- Flash Decompiler
Клієнт представляє з себе кілька папок з файлами гри (картинки і .swf файли), два основних ігрових файлу (tz.swf - гра і sbtl.swf - бій) і файли лаунчер.
Для запуску гри можна запустити лаунчер або просто tz.swf. При запуску, лаунчер перевіряє хеши всіх файлів, і якщо знаходь різницю то замінює фаил, нам це не підходить, тому буде використовувати другий варіант.
Як працює
Як я вже сказав раніше, в ліенте є окрема папка з флеш файлами, тобто вони завантажуються в разі потреби. Ці файли можна поділити на 3 види: бібліотеки (зберігання картинок), будівлі (для кожної будівлі свій файл) і модулі для внутріігрового КПК (міні ігри, помічники). Для бота ми будемо використовувати один з КПК модулів, який відповідає за гру з розбиранням / збіркою зброї.
Реалізація
Нехитрими маніпуляціями ми дізнаємося що за збірку відповідає minigame1.swf, тому створюємо у Флеша свій minigame1.fla розміром 860 на 370 пікселів.
аналіз .swf
Як декомпілер будемо використовувати Flash Decompiler Trillix від Eltima Software.
Подивившись вихідні декількох файлів можна зрозуміти що запити до сервера передаються через
Це нам і треба було.
скан змінних
До жалю, коли я писав статтю, у мене виникли проблеми зі сканером, так що я просто напишу що переминние були виду
І так, у нас є все що треба, кромі самих запитів. Запускаємо tz.swf і WPE PRO. У WPE вибираємо мета - FlashPlayer.exe і запускаємо вилов.
Ось приклади деяких пакетів:
трохи коду
Самим алгоритмам роботи бота я б хотів присвятити окрему тему, тому тут я покажу лише приклад.
В результаті у нас повинно вийти щось на зразок такого:
Дякую за увагу, сподіваюся вам сподобалося!