@Quad_Tree

Как сделать декомпилированный код нечитаемым?

Как я знаю, защитить Java код от декомпиляции достаточно трудно, но я хотел бы узнать, существуют ли какие-либо инструменты для того чтобы сделать код не читаемым при декомпиляции?
Например в Minecraft в jar все классы имеют не читаемые имена (aa, ab, ac, aab, aaw, aay) и не читаемые переменные (nt4, er3, r24m). С помощью какого инструмента это можно реализовать?
  • Вопрос задан
  • 1231 просмотр
Решения вопроса 2
GavriKos
@GavriKos
Гуглите "java obfuscation"
Ответ написан
Комментировать
Rou1997
@Rou1997
Невозможно ничего защитить от декомпиляции, можно повысить ее сложность и уменьшить ее рентабельность. Превратить в "Неуловимого Джо".
Исходить необходимо из рентабельности. Смотреть на свое приложение глазами того самого хитрого умельца. Для начала: что он вообще хочет? Ему нужен рабочий код целиком, рабочий участок кода, или просто достаточно подсмотреть принцип (несколько строчек), или что? Если несколько строчек, то "портить" имена классов и методов почти что не имеет смысла.
По ситуации уже определяетесь, какого результата хотите достичь, и выбираете приемы. А их очень много.
На Android можно часть написать на JNI - в ассемблере и машинных кодах копаться тяжело, а C++ не всегда декомпилируется достаточно корректно, особенно, если скомпилировать библиотеку только под armeabi, а не под несколько разных архитектур.
Кстати, декомпиляторы Java тоже не бывают идеальными, ну, а smali - это тоже тяжело, но в нативе все в целом гораздо тяжелее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Mirn
как вариант реализовать как можно больше кусков кода например в базисе "и-не" без ветвлений на базе битовых масок например.
выйдет просто адовая каша, но падение производительности раз в 100.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы