Как я могу полностью скрыть классы из пакета приложения для Android?

Некоторое время назад я декомпилировал приложение с помощью apktool, чтобы понять некоторые фрагменты. Любопытно было то, что приложение было запутано, на самом деле приложение представляло только один класс с именем «Protection.class», полный методов, таких как «class.forName» или «class.getMethod»..

При поиске в Google это, конечно, структура отражения, но, увидев некоторые учебные пособия, я понял, что классы, вызываемые отражением, должны быть в пакете приложения. А в моем случае классов кроме "защиты" нет.

В заключение мои вопросы: Можно ли полностью вынести классы из пакета и все же как-то использовать их методы? Где они хранятся в папке apk (если они есть)? Есть ли способ взаимодействовать с процессом сборки apk, чтобы запутать код или (как в этом случае) скрыть классы из пакета?

ПРИМЕЧАНИЕ. Proguard не может этого сделать, я уже тестировал его в прошлом.


person Alessio Trecani    schedule 19.01.2016    source источник
comment
Похоже, что все необходимые классы должны были быть перемещены во внутренние классы внутри класса Protection. Если бы вы могли вспомнить, какое это было приложение, это была бы самая полезная информация.   -  person zmarties    schedule 19.01.2016
comment
Спасибо за ответ .. APK является модом perkTv (или что-то в этом роде). Я думаю, это именно то, что вы сказали. И как я могу включить все классы в один класс и вызвать их с отражением. Примечание. У меня есть скриншот jd-gui с некоторым кодом внутри (если вы хотите его увидеть, я могу его опубликовать)   -  person Alessio Trecani    schedule 19.01.2016


Ответы (4)


На скриншоте видно, что это приложение защищено DexGuard (коммерческая разработка ProGuard, которая идет намного дальше).

См. также этот ответ: Какие методы используется для защиты этого Android APK: Reflection? Шифрование? Как мне перепроектировать его и проанализировать?

person zmarties    schedule 19.01.2016
comment
Из этого сообщения исходные классы могут (и я думаю, что они будут) разделены на несколько меньших классов, в моем случае они полностью скрыты. Но в любом случае большое спасибо за ссылку на ветку.. это мне очень помогло. - person Alessio Trecani; 19.01.2016

вы можете использовать progaurd для защиты файла apk от декомпилятора. также вы можете использовать DexGaurd для повышения безопасности https://www.guardsquare.com/dexguard

person Nauman Ali Shah    schedule 19.01.2016
comment
Проблема в том, что proguard просто запутывает код (но файлы smali можно прочитать без проблем). Я ищу, чтобы понять, как работает процесс сборки apk, чтобы понять, как я могу скрыть классы и где они хранятся. - person Alessio Trecani; 19.01.2016
comment
чтобы понять процесс, прочитайте ссылку на официальную документацию developer.android.com/sdk/ установка/studio-build.html - person Nauman Ali Shah; 19.01.2016
comment
да, я прочитал это, но мой вопрос тот же: есть ли способ взаимодействовать с процессом сборки apk, чтобы запутать код или (как в этом случае) скрыть классы из пакета? - person Alessio Trecani; 19.01.2016
comment
эта ссылка может быть полезна для вас stackoverflow.com/questions/13854425/ @AlessioTrecani - person Nauman Ali Shah; 19.01.2016
comment
Еще раз спасибо за ответ... В любом случае я его уже читал и там нет ответа на мой вопрос. Они говорят о proguard (и это не работает), а также об обфускации кода. Мой вопрос в другом. - person Alessio Trecani; 19.01.2016

Вы можете использовать для этого библиотеку progaurd с помощью библиотеки php и написать progaurd для своего проекта, а затем прикрепить к проекту своего приложения в файле gradle (в студии Android) файла progaurd (в eclipse). для этого php есть прекрасная библиотека с именем php_progaurd

person BinMan1    schedule 19.01.2016
comment
proguard не может делать то, что я ищу. И я хотел бы знать, как я могу взаимодействовать с процессом сборки, а не как я могу запутать свое приложение. - person Alessio Trecani; 19.01.2016
comment
Можете ли вы описать больше, что вы хотите? - person BinMan1; 19.01.2016

Вы можете использовать DexGuard для этой цели. Среди множества других функций DexGuard имеет возможность шифровать ваши классы и расшифровывать их во время выполнения. Эти классы будут присутствовать в памяти только во время выполнения, поэтому исходный код не может быть реверсирован из статического APK. DexGuard — это коммерческий продукт, разработанный создателем ProGuard. Я бы посоветовал вам связаться с ними по адресу [email protected].

Ваше здоровье,

h4

person Dario Incalza    schedule 03.02.2016