Подтвердить что ты не робот

При запутывании с помощью ProGuard, -keepattribтрибуты SourceFile, LineNumberTable облегчают обратное преобразование полученного apk?

Мне кажется, что мне нужно больше подробностей в моих отчетах о трассировке стека, но я обеспокоен тем, что, включив дополнительные данные (используя -keepattributes SourceFile, LineNumberTable), я делаю мое приложение еще проще для обратной инженерии. Это так, и если да, то насколько?

4b9b3361

Ответ 1

Руководство по ProGuard > Примеры > Создание полезных обфусканных стеков стека

Требуется атрибут SourceFile, потому что виртуальная машина Oracle/Sun Java в противном случае не включает номера строк в трассировках стека, что вы действительно хотите (и который совершенно безвреден сам по себе). Я не проверял, верно ли это для виртуальной машины Android Dalvik.

Что касается решения, ProGuard может сохранить атрибут SourceFile, но заменить его содержимое бессмысленной строкой по вашему выбору, например.

-renamesourcefileattribute SourceFile

Значение строки не важно для интерпретации трассировки стека. Выбор такой строки, как "SourceFile", позволяет избежать увеличения размеров файлов классов, поскольку эта строка уже присутствует по определению.

Ответ 2

Я не совсем уверен в том, что происходит, но если имя исходного файла содержит фактическое имя класса, кто-то может использовать его для сопоставления обфускационных имен классов с именами реальных классов. Учитывая, что obfsucation уже все запутывает, зачем хранить исходный файл вообще? Все должно и должно выполняться, детали отладки не требуются во время выполнения, поэтому нет смысла их хранить. Чем больше вы удаляете, тем лучше ваши цели.

Ответ 3

Я думаю, что вы можете просто использовать:

-keepattributes LineNumberTable

Ответ 4

-renamesourcefileattribute
-keepattributes SourceFile, LineNumberTable,Signature,Exceptions,InnerClasses,EnclosingMethod

или

-renamesourcefileattribute ''
-keepattributes SourceFile, LineNumberTable,Signature,Exceptions,InnerClasses,EnclosingMethod

Просто оставьте имя файла пустым.