Size: a a a

2018 February 19

P

Pavel B in Android Guards
Gregory Klyushnikov
jadx умеет декомпилировать в проект градла прямо сразу, но едва ли получится идеально декомпилировать прямо всё
спасибо
источник

VZ

Vladislav Zhuk in Android Guards
Gregory Klyushnikov
но он работает сильно лучше, чем другие декомпиляторы, потому что использует напрямую dex
От того что он использует dex и качеством нету логической взаимосвязи
источник

GK

Gregory Klyushnikov in Android Guards
Vladislav Zhuk
От того что он использует dex и качеством нету логической взаимосвязи
ну как-то мне казалось, что конвертация байткода далвика в обычные классы делает декомпиляцию сложнее
источник

GK

Gregory Klyushnikov in Android Guards
потому что она наверняка не совсем однозначная
источник

VZ

Vladislav Zhuk in Android Guards
Gregory Klyushnikov
потому что она наверняка не совсем однозначная
Несколько я знаю - однозначная. Но я в этом не уверен
источник

NK

Nikita Kulikov in Android Guards
Конечно, не однозначная
источник

NK

Nikita Kulikov in Android Guards
К тому же, как минимум, количество кодов dalvik и байткода отличается
источник

GD

Grigoriy Dzhanelidze in Android Guards
Gregory Klyushnikov
ну как-то мне казалось, что конвертация байткода далвика в обычные классы делает декомпиляцию сложнее
это так, как минимум из-за того, что дофига всего криво декомпилируется
источник

GD

Grigoriy Dzhanelidze in Android Guards
видел сотни примеров когда декомпилировалось в какое-то дерьмо, хотя на деле всё было тривиально
источник

GK

Gregory Klyushnikov in Android Guards
Grigoriy Dzhanelidze
это так, как минимум из-за того, что дофига всего криво декомпилируется
ну вот исходя из моего опыта dex напрямую декомпилируется качественнее, чем после dex2jar
источник

VZ

Vladislav Zhuk in Android Guards
Хм. Значит я все это время думал неправильно. Сейчас подумал, пару раз пользовался jadx в онлайне и вроде и правда результат был лучше. Он как минимум оставляет куски с байткодом закомментированные, если не смог справиться, насколько я помню. Такая малочь, а работать намного приятней. А может кто носом ткнуть где почитать, чтобы убедиться окончательно, что dex в jar неоднозначно компилируется-декомпилируется?
источник

R

Rtem in Android Guards
Почитай список опкодов далвика и сравни его со списком обычных джавайских опкодов. @zhukVladislav
источник

VZ

Vladislav Zhuk in Android Guards
Rtem
Почитай список опкодов далвика и сравни его со списком обычных джавайских опкодов. @zhukVladislav
Да читал на самом деле. Но разница в колличестве ведь не говорит же о том, что они не однозначны
источник

GK

Gregory Klyushnikov in Android Guards
по-моему должно быть достаточно просто того факта, что обычная JVM на стеке, а далвик на регистрах
источник

VZ

Vladislav Zhuk in Android Guards
Gregory Klyushnikov
по-моему должно быть достаточно просто того факта, что обычная JVM на стеке, а далвик на регистрах
Почему этого факта достаточно?
источник

GK

Gregory Klyushnikov in Android Guards
Vladislav Zhuk
Почему этого факта достаточно?
потому что при преобразовании регистров в стек может как раз таки быть неоднозначность 🤔
источник

VZ

Vladislav Zhuk in Android Guards
А может и не быть
источник

GK

Gregory Klyushnikov in Android Guards
ну то есть у обычной JVM все операции вида "взять N данных со стека и сделать с ними что-то и положить результат на стек обратно", что, имхо, даёт меньше гибкости, чем регистры, которых может быть сразу много и нет никакого ограничения на порядок их использования
источник

GK

Gregory Klyushnikov in Android Guards
поэтому я подозреваю, что dex2jar может обходить это созданием промежуточных локальных переменных, которых изначально в коде не было
источник

GK

Gregory Klyushnikov in Android Guards
и это, естественно, непосредственно влияет на качество декомпиляции, хоть и полученный байткод делает то же самое, что изначальный в дексе
источник