2016-11-24 9 views
0

После поиска я понимаю, что proguard не может обфускать значения строк, Я пробовал тип char [], но после декомпиляции я могу видеть содержимое переменной. Итак, есть ли решение обфускации статических переменных? У меня есть адрес (строка), который должен быть секретным в моем коде после обфускации.obfuscate string value java android

код после декомпиляции

public static final char[] f4516b; 
.... 
static { 
    f4516b = new char[]{'h', 't', 't', 'p', ':', '/', '/', '1', '0', '0', '.', '1', '0', '.', '1', '0', '0', '.', '1', '0', '/'}; 
+1

Почему, по вашему мнению, люди декомпилируют вашу программу, чтобы увидеть ваш URL? – Gabriel

+0

Я использую веб-службу, чтобы они могли делать что-либо с этим адресом после декомпиляции. Мне нужно скрыть эту строку – nouha

+0

@nouha Я получаю это, но из-за того, что строка в источнике не поможет. На корневом устройстве или эмуляторе легко отслеживать весь сетевой трафик и в любом случае находить ip/hostname. Почему вы думаете, что кто-то может что-либо сделать с адресом, который они не могут сделать с приложением/почему это проблема? – Gumbo

ответ

2

Там нет никакого способа, вы можете сохранить какой-то автономный секрет внутри приложения. Если вам нужно, чтобы ваше приложение работало в какой-то момент, его можно автоматически обработать, иначе ваше приложение также не получит необходимой информации.

1

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

Но если человек использует метод де-обфускации, у них будет ваша строка. Кроме того, адрес удаленного звонка всегда будет доступен, если они прослушивают исходящий веб-вызов с помощью wirehark или что-то подобное.

+0

Спасибо за объяснение, можете ли вы помочь мне в де-обфускации? Просто пример, или есть решение sothe? – nouha

1

Не имеет смысла скрывать URL. Это можно увидеть на сетевом уровне. Если вы хотите, чтобы кто-то не смог получить доступ к вашему сайту, вы можете использовать, например, базовую аутентификацию через HTTPS и скрыть секреты с помощью Android NDK (просто пример). Его все еще можно декомпилировать, но это может быть значительно сложнее.

+0

Спасибо за ответ, могу ли я увидеть пример вашего решения? Я не знаю этого, как скрыть секреты с помощью Androi NDK? Вы можете объяснить plz? – nouha