В настоящее время я читаю исследовательскую работу по обфускации. Вот часть статьи, которая касается моего вопроса.
"в то время как текущие схемы обфускации улучшают некоторые островки статического анализа, такие как изменение макета исходного кода, изменение потока управления и изменение данных, они легко подвергаются обратному инженерному анализу из-за отсутствия сокрытия API. Следовательно, количественная оценка схема необходима, чтобы гарантировать, что обфускация применяется к соответствующему API с адекватной степенью устойчивости к обратному проектированию ».
Обфускация напрямую связана с reverse-engineering, и для предотвращения этого используется proguard. Более того, чтобы предотвратить раскрытие конечных точек API, вы можете использовать Dexguad.
«Обфускация API», вероятно, означает изменение имен идентификаторов, таких как имена классов, имена методов, имена полей и т. д., На очень не описательные имена. чтобы читатели вашего кода не знали, что делает ваш код.
Proguard - такой инструмент. Здесь - это сообщение, которое я нашел, в котором используется Proguard для обфускации частных методов в простом классе. Вы можете увидеть, как privateStaticMethod превратился в a, и как названия параметров превратились в paramString1 и paramString2.
Поступая так, читатели не узнают, что делает a, просто взглянув, потому что a буквально ничего не сообщает им о том, что на самом деле делает метод. Методы, которые вызывает a, также могут быть запутаны как b или c, что еще больше затрудняет понимание того, что делает ваш код.
Под обратным проектированием здесь понимается попытка выяснить, как изначально выглядел обфусцированный код. Очевидно, что изменение имен методов и параметров затрудняет обратное проектирование, чем просто изменение потока управления и макета кода.
Вероятно, это означает переименование методов, полей и классов, чтобы имена больше ничего не значили, как
m_12345.