Декомпиляция запутанных файлов dex/jar Android в исходный код Java

Есть ли способы декомпилировать запутанные файлы dex/jar в исходный код Java? У меня есть APK без файла class.dex, но у меня есть файл odex. Я пытался использовать oat2dex и dex2jar для получения файлов dex/jar, а затем использовал несколько декомпиляторов для получения исходного кода Java, но я либо получаю ошибки в некоторых частях, либо код очень трудно читать, поскольку он запутан.

Вот что я пробовал

  • JD-GUI (сначала я попробовал завершить декомпиляцию, но с несколькими ошибками)
  • Фернфлауэр (не удалось завершить)
  • Procyon (неплохо, но с некоторыми ошибками)
  • CFR (лучше, но с некоторыми ошибками)
  • Jadx (лучший, с наименьшим количеством ошибок, но код по-прежнему запутан и трудно читаем, с несколькими классами/методами с одинаковыми случайными именами)

Что я могу сделать, чтобы получить более читаемый код?


person user1118764    schedule 26.04.2016    source источник
comment
Почему вы декомпилируете запутанный код? Затруднить это — цель инструментов запутывания.   -  person Elliott Frisch    schedule 26.04.2016
comment
Если будет хороший, думаю, люди перестанут запутывать свой код.   -  person T D Nguyen    schedule 26.04.2016
comment
Я правильно понимаю, что решения нет?   -  person user1118764    schedule 26.04.2016
comment
Декомпилятор Krakatau специально разработан для обработки запутанного кода. Однако нет ничего, что могло бы волшебным образом исправить тарабарщину в именах.   -  person Antimony    schedule 26.04.2016
comment
Чтобы исправить тарабарщину в именах, вам придется вручную переназначить классы с помощью программы деобфускатора, такой как Enigma. Или, если вы можете использовать декомпилятор для получения исходного кода, вы можете сделать все это в своей среде IDE (но это займет больше времени).   -  person Display Name    schedule 27.04.2016


Ответы (1)


Нет никакого волшебного инструмента, который рефакторит весь ваш обфусцированный код во что-то осмысленное и «чистое». Запутанный код запутан: смиритесь с этим.

Однако вы можете сохранить запутанный исходный код, создать проект с предпочитаемым вами IDE (с поддержкой рефакторинга) и вручную проанализировать функции и переменные и преобразовать их во что-то значимое. Это требует много времени, но в итоге вы получите почти чистый исходный код.

person Luca D'Amico    schedule 02.05.2016