dex

Хирургия Android. Разбираем classes.dex.. Акулы Андроида

14.10.2014

Хирургия Android. Разбираем classes.dex.

Ну вот мы и добрались до самого вкусного во всём процессе обратной разработки – до файла classes.dex, контейнера, вскрыв который мы сможем получить (если повезет) исходный код приложения под Android.

Нам предстоит проделать два несложных этапа. Но сначала необходимо сказать в двух словах о том, что же из себя представляет формат DEX или Dalvik Executable. На самом деле это файл, содержащий в себе программный код для виртуальной машины Dalvik. Гурманы могут посмотреть его спецификацию здесь. а я просто напомню о том, что приложения для Android пишутся на языке Java, но после компиляции кода в .class -файлы, вызывается утилита dx, которая транслирует их в один файл classes.dex, являющийся основной составляющей APK файла.

Поэтому целью первого этапа обратной разработки будет обратное преобразование файла DEX в формат JAR (Java Archive), zip-подобный архив с набором файлов на языке Java и метаданными. Для выполнения такого преобразования нам понадобится утилита dex2jar. взять которую можно тут. загрузив архив dex-translator. Пользоваться ею очень просто – достаточно скормить утилите нужный APK-файл (или предварительно вынутый из него classes.dex). Для этого можно воспользоваться любимой консолью или просто перетащить файл на батник dex2jar. Если все пройдет без проблем, то в той же директории появится файл под названием «_dex2jar.jar». он-то нам и будет нужен для второго этапа.

Второй этап представляет собой реверс инжиниринг файла JAR. Это просто zip-архив, открыв его штатным архиватором, мы увидим внутри набор файлов с расширением .class, которые являются скомпилированным Java-кодом.

Для того, чтобы удобно посмотреть их содержимое в читабельном виде, нам понадобится приложение Java Decompiler (JAD). Загрузить его можно, например, отсюда. я брал версию JD-GUI. Распаковываем архив, запускаем программу (она обладает графическим интерфейсом) и с её помощью открываем (Файл — Открыть ) полученный на предыдущем этапе JAR-файл.

Нетрудно видеть, что мы добрались до кода приложения под Android. Здесь много служебных файлов, не очень интересных. Подсмотреть, какие классы являются стартовыми, можно в файле Manifes.xml. Чтобы сохранить все файлы в читаемом виде в одном архиве, выберите пункт File – Save All Sources. Это позволит позже загрузить их в более удобную IDE или открыть нормальным редактором вроде Notepad++ и анализировать код со всеми удобствами.

Кстати, вот и класс, который шлет SMS на платные номера, нашелся:

Поделиться статьей:

Краткое содержание статьи: Как в два шага разобрать файл classes.dex из состава APK при помощи утилит dex2jar и jad, чтобы посмотреть исходный код приложения Android clases.dex, dex2jar dex

Источник: Хирургия Android. Разбираем classes.dex. | Акулы Андроида

Також ви можете прочитати