Добрі поради » Інтернет » Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу

3-05-2016, 21:04
742
0
Деколи хтось хоче подивитися, а яка ж начинка у певній програмі? Тоді йому доводиться використовувати реверс-інжиніринг. Що це таке? Як діє? Яким чином відбувається цей процес? Про все це ви зможете дізнатися з цієї статті.

Що таке реверс-інжиніринг програм?

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
Так називають процес розбору програми з метою зрозуміти, як воно працює, щоб у майбутньому відтворити цей процес з внесенням необхідних змін. Зазвичай для цих цілей використовуються відладчик і асемблер. В залежності від якості використовуваного програмного забезпечення будуть відрізнятися результат і кількість часу, який необхідно витратити на його приведення в нормальний вигляд. Пояснювати реверс-інжиніринг для початківців краще всього на прикладі. Як оного виступить додаток, написаний для Android. А тепер давайте буде дізнаватися, що і як.

Робота з Android-додатками

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
Для початку необхідно прояснити деякі моменти. У додатках використовується байт-код і LogCat. Це місцеві аналоги раніше згаданих відладчика і асемблера. Також необхідно розуміти структуру самих додатків. Так, кожна програма є файлом з розширенням apk. Упаковується він zip'ом. Нас цікавить його вміст – ресурси програми, classes.dex та AndroidManifest.xml. Якщо ви займаєтеся програмуванням на Android, то питань з першими і останніми бути не повинно. А ось classes.dex – це байт-код програми, складений спеціально для віртуальної машини. Вивудити з нього вихідний код java представленими в інтернеті засобами не вийти. Але можливим є отримання dalvik opcodes – спеціального набору команд, що використовуються для віртуальної машини. Для аналогії можна сказати, що це асемблер місцевого розливу. Також classes.dex може бути перетворений в файл з розширенням jar. Вже у такому випадку після його декомпіляції можна отримати java-код, який буде більш-менш читабельним. По такому шляху ми і підемо.

Декомпіляція

Цей процес буде проводитися з використанням програми Апк Manger. Перш ніж приступати до роботи, необхідно переконатися, що потрібні драйвери для роботи девайса, а також функціонує режим USB debugging. Спочатку нам необхідно буде перемістити файл, який буде розбиратися в директиву apk_managerplace-apk-here-for-modding. Після цього слід запустити Script.bat. Якщо ніяких проблем немає, то запуститися консоль, на якій будуть зелені написи. Вибираємо пункт номер дев'ять – «Декомпілювати». Після того як буде запущений процес, необхідно не закривати консоль. Потім слід відкрити зацікавив apk-файл за допомогою архіватора і витягти з нього classes.dex, який потрібно обробити програмою dex2jar. Для необхідного нам результату його треба перемістити на об'єкт з розширенням .bat. З'явиться файл, який буде закінчуватися .jar. Поки що вікно не закриваємо.

Аналізуємо дані

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
Щоб отримати інформацію про програму, необхідно відкрити його маніфест. По ньому визначаємо, що виступає в ролі головної активності. Вона і представляє для нас зараз найбільшу важливість. Також бажано подивитися в самий низ програми. Якщо внизу буде інформація про менеджера ліцензій, то це суттєво ускладнить проведення реверсного інжинірингу. Якщо перейти на jd-gui і розгорнути дерево, то ми побачимо декілька просторів імен. Припустимо, що їх троє. У першому знаходяться файли, пов'язані з рекламою. У другому будуть класи менеджера ліцензій. У третьому знаходяться нам необхідні дані. У нього-то ми і прямуємо. Тут необхідно буде знайти і видалити ключ, а потім і інші рядки, які перевіряють, чи є ліцензійної працююча версія. Все це потрібно почистити. Потім у нашому Manager Apk шукаємо місце, куди зазначено розміщувати байт-код. Тепер зробимо невеликий відступ і закомментіруем команди, з якими потенційно можуть виникнути проблеми. Після цього нам залишилося тільки скомпілювати програму.

Складання програми

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
В цьому нам допоможе все той же Manager Apk. У вікні консолі, яка нами не закривалося, вибираємо пункт №14. Далі справа техніки. Якщо додаток досить складне, то при запуску воно може частково або повністю втратити свою працездатність. Не засмучуйтеся, це означає, що ми тільки на півдорозі і є ще куди йти. Продовжуємо проводити реверс-інжиніринг Android-додатків. Сказати, що потрібно робити в конкретному випадку, загальними словами, на жаль, неможливо. Тому шукати проблемне місце доведеться самостійно. Так, якщо вікно програми блокується спливаючим вікном, то необхідно переглянути код і видалити ту його частину, що відповідає за даний діалог. Допомогти з цим зможе jd-gui. Як бачите, реверсний інжиніринг не є легкою справою, і він вимагає наявності значного багажу знань. Навіть якщо все без проблем запустилося, необхідно буде протестувати працездатність програми. Тобто реверс-інжиніринг є ще витратним за часом дією. Продовжуємо працювати, поки не будуть виявлені всі проблеми.

Безпека

А що, якщо нам потрібен захист Android-додатків від реверс-інжинірингу? В такому випадку є два варіанти: використання спеціальних програм або створення кодової конструкції, яка буде заважати здійснювати розбір написаного. Останній варіант підходить виключно досвідченим фахівцям, тому ми розглянемо тільки перший спосіб захисту. В якості спеціалізованого програмного забезпечення використовуємо ProGuard. Це програма, яка використовується для скорочення, обфускации і оптимізації коду. Якщо програму «прогнати» через нього, то ми отримаємо файл з розширенням *.apk меншого розміру, ніж він був. У такому разі її буде значно складніше розібрати. Причому перевагою даної програми є те, що вона навіть була впроваджена в систему складання Android-додатків з оновлення r9. Тому скористатися нею може будь-який розробник, який має стандартні інструменти створення і розробки.

Висновок

Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
Не можна сказати, що реверс-інжиніринг можна представити як щось однорідне погане або гарне. Звичайно, з точки зору розробників, які створили додаток, це зовсім не радісна подія. Але з іншого боку, у багатьох випадках написання досвідченими програмістами необхідних файлів може бути за часом менш витратним, ніж використання такого інструментарію. Хоча для початківців розробників реверс-інжиніринг може послужити непогану службу, якщо немає уявлення про те, як реалізувати щось, навіть приблизні і не зовсім зрозумілі начерки можуть допомогти з досягненням поставленої мети.
Схожі добрі поради по темі
Налаштування та оптимізація Windows 10: програми, інструкції
Налаштування та оптимізація Windows 10: програми, інструкції
Напевно, не потрібно пояснювати, що будь-яка система Windows має таку величезну кількість непотрібних компонентів, що працюють у фоновому режимі, що
Кастомна прошивка iOS, Android, для Samsung Galaxy, HTC. Кастомна прошивка 3G
Кастомна прошивка iOS, Android, для Samsung Galaxy, HTC. Кастомна прошивка 3G
Сьогодні ми розповімо вам, що таке кастомну прошивку. Дане рішення, як правило, використовується для розширення можливостей мобільного пристрою і
Як оновити Android. Практичні рекомендації
Як оновити Android. Практичні рекомендації
У наш божевільний час, коли оновлення ОС виходять мало не раз на тиждень, а смартфони по потужності наближаються до ПК, для багатьох справжньою
Що таке Android? Можливості Android
Що таке Android? Можливості Android
Сьогодні про новій операційній системі Android знають всі. Вона відкриває величезні можливості як для розробників, так і для користувачів, які можуть
Як встановити додаток на Android різними способами
Як встановити додаток на Android різними способами
Як встановити додаток на Android різними способами - з офіційного магазину і зі сторонніх джерел.
Як встановлювати додатки на Android зі смартфона або комп'ютера
Як встановлювати додатки на Android зі смартфона або комп'ютера
У статті представлена інформація про те, як встановлювати програми на Android зі смартфона або комп'ютера, докладна інструкція для кожного способу