Dalvik Deobfuscator, основанный на шаблоне, который использует ограниченное выполнение для улучшения семантического анализа. Кроме того, вдохновение для другого Android Deobfuscator: упростите.
До
После
SHA1: A68D5D2DA7550D35F7DBEFC21B7DEEBE3F4005F3
MD5: 2DD2EEEDA08AC8C15BE8A9F2D01ADBE8
Поскольку вы элитный реверс Android, я уверен, что на вашем пути уже есть Smali и Baksmali. Если по какой -то странной причине он еще не установлен, это должно начать вас, но, пожалуйста, внимательно изучите его перед запуском:
mkdir ~ /bin || cd ~ /bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali- * .jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali- * .jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH= $PATH : $PWD Убедитесь, что adb находится на вашем пути.
gem install dex-oracleИли, если вы предпочитаете строить из источника:
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle installУ вас должен быть либо работающий эмулятор, либо устройство, подключенное к работе Oracle. Минимальная требуемая версия Android - 5,0!
Oracle нужно выполнить методы в живой системе Android. Это может быть либо на устройстве, либо на эмуляторе (предпочтительно). Если это устройство, убедитесь, что вы не против запустить потенциально враждебный код на нем .
Если вы хотите использовать эмулятор и уже установили Android SDK, вы можете создавать и запустить изображения эмулятора с:
android avd Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
-h, --help Display this screen
-s ANDROID_SERIAL, Device ID for driver execution, default=""
--specific-device
-t, --timeout N ADB command execution timeout in seconds, default="120"
-i, --include PATTERN Only optimize methods and classes matching the pattern, e.g. Ldune;->melange()V
-e, --exclude PATTERN Exclude these types from optimization; including overrides
--disable-plugins STRING[,STRING]*
Disable plugins, e.g. stringdecryptor,unreflector
--list-plugins List available plugins
-v, --verbose Be verbose
-V, --vverbose Be very verbose
Например, для деобфуссных методов в классе, называемом Lcom/android/system/admin/CCOIoll; Внутри APK под названием obad.apk :
dex-oracle -i com/android/system/admin/CCOIoll obad.apkOracle принимает файлы Android (APK), Dalvik Crementables (DEX) и Smali в качестве входов. Во -первых, если вход является APK или DEX, он разобрается в Smali Files. Затем файлы Smali передаются различным плагинам, которые выполняют анализ и модификации. Плагины ищут шаблоны, которые можно преобразовать в нечто проще для чтения. Чтобы понять, что делает код, некоторые методы Dalvik фактически выполняются, и вывод собирается. Таким образом, некоторые вызовы метода могут быть заменены постоянными. После этого все файлы Smali обновляются. Наконец, если ввод был APK или файлом DEX, измененные файлы Smali перекомпилируются и создается обновленный APK или DEX.
Выполнение метода выполняется драйвером. Входной APK, DEX или Smali объединяется с драйвером в один DEX с использованием Dexmerge и нажимается на устройство или эмулятор. Плагины могут затем использовать драйвер, который использует Java Reflection для выполнения методов из входного DEX. Возвратные значения могут быть использованы для улучшения семантического анализа за пределами простого распознавания шаблонов. Это особенно полезно для многих методов дешифрования строк, которые обычно занимают зашифрованную строку или массив байтов. Одним из ограничений является то, что выполнение ограничено статическими методами.
Есть три плагина, которые поставляются с Oracle:
Если вы столкнетесь с новым типом запутывания, может быть возможно Deobfuscate с Oracle. Посмотрите на Smali и выясните, может ли код быть:
Если кто -то из этих двух имеет место, вы должны попытаться написать свой собственный плагин. Есть четыре шага по созданию собственного плагина:
Включенные плагины должны быть хорошим руководством для понимания шагов № 3 и № 4. Драйвер разработан, чтобы помочь с шагом № 2.
Конечно, вы всегда можете поделиться любым запутыванием, с которым вы сталкиваетесь, и кто -то может в конечном итоге добраться до этого.
Во -первых, убедитесь, что dx находится на вашем пути. Это часть Android SDK, но, вероятно, это не на вашем пути, если вы не хардкор.
Папка драйвера - это Java Project, управляемый Gradle. Импортируйте его в Eclipse, Intellij и т. Д. И внесите любые вам нравятся все изменения. Чтобы закончить обновление драйвера, запустите ./update_driver . Это восстановит драйвер и преобразует выходную банку в DEX.
Если есть проблема с выполнением кода драйвера на вашем эмуляторе или устройстве, обязательно откройте monitor (часть Android SDK) и проверьте там какие -либо подсказки. Даже если ошибка не имеет смысла для вас, это поможет, если вы опубликуете ее вместе с проблемой, которую вы создаете.
Не все платформы Android хорошо работают с Dex-Oracle. Некоторые из них просто выбивают при попытке выполнить произвольные файлы dex. Если у вас проблемы с Segfaults или сбоями драйверов, попробуйте использовать Android 4.4.2 API -уровень 19 с помощью ARM.
Вполне возможно, что плагин видит шаблон, который он считает запутыванием, но на самом деле является каким -то кодом, который он не должен выполнять. Это кажется маловероятным, потому что паттерны запутывания действительно необычны, но это возможно. Если вы находите, что конкретный плагин вызывает проблемы, и вы уверены, что приложение не защищено этим конкретным препятствием, то есть приложение не Dexguarded, но плагин DexGuard пытается выполнить вещи, просто отключите его.