•  – Шарф з косами спицями: схема візерунка, опис роботи 
  •  – Смартфон Samsung Galaxy S4 GT-I950016Gb: огляд, опис, характеристики і відгуки 
  •  – GPS-трекер для автомобіля. Який GPS-трекер вибрати для автомобіля? Встановлення GPS-трекера на автомобіль. Підключення GPS-трекера 
  •  – Кращі марки китайських телефонів: огляд, характеристики, моделі та відгуки 

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

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

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

Реверс-інжиніринг для початківців. Захист 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-додатків від реверс-інжинірингу
Не можна сказати, що реверс-інжиніринг можна представити як щось однорідне погане або гарне. Звичайно, з точки зору розробників, які створили додаток, це зовсім не радісна подія. Але з іншого боку, у багатьох випадках написання досвідченими програмістами необхідних файлів може бути за часом менш витратним, ніж використання такого інструментарію. Хоча для початківців розробників реверс-інжиніринг може послужити непогану службу, якщо немає уявлення про те, як реалізувати щось, навіть приблизні і не зовсім зрозумілі начерки можуть допомогти з досягненням поставленої мети.
Реверс-інжиніринг для початківців. Захист Android-додатків від реверс-інжинірингу
  • Коментують
  • Сьогодні
  • Читають
загрузка...