Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
#1

Защита приложения - Программирование Android

30.12.2013, 16:46. Просмотров 959. Ответов 6
Метки нет (Все метки)

Всем привет!

В приложении делаю запрос на сервер, который шифруется с помощью криптографии. Так вот этот salt хранится у меня в самом приложении в переменной типа String. Сегодня узнал, что можно декомпилировать весь apk файл и ужаснулся. Весь код, как на ладоне, включая тот самый салт.
Есть ли какие варианты защиты в данном случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2013, 16:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Защита приложения (Программирование Android):

Защита приложения - Программирование Android
Мое приложение использует xml файлы с сервера и хранит их рядом. Можно ли как то стороннему человеку получить все файлы с которыми работает...

Защита приложения на Андроиде - Программирование Android
Ребят, доброго времени суток всем! Есть программа. Нужно: защитить, выпустить собранное apk с защитой, чтобы не смогли вскрыть,...

Защита приложения от запуска в эмуляторе - Программирование Android
Доброго времени суток! Есть ли способ ограничить запуск своего приложения из эмулятора?

Защита приложения от реверс инжиниринга - Программирование Android
Добрый день! 1) Как можно защититься от * или хотя бы сильно затруднить реверс инжиниринг* приложения? 2) Сделать нечитаемым...

Ошибка при вызове приложения из другого приложения - Программирование Android
Сделано два простеньких приложения и я хочу чтобы одно приложение запускало другое. В приложении, которое будет запущено установлен фильтр...

Из приложения А проверить наличие установленного на устройстве приложения В - Программирование Android
Извиняюсь за нубский вопрос. Подскажите в андроид есть возможность из приложения А проверить наличие установленного на устройстве...

6
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
30.12.2013, 17:07 #2
Формируйте эту строку в рантайме с использованием извратных алгоритмов, а потом обфусцируйте код вашего приложения.
1
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
30.12.2013, 19:37  [ТС] #3
Цитата Сообщение от angryrobot Посмотреть сообщение
Формируйте эту строку в рантайме с использованием извратных алгоритмов, а потом обфусцируйте код вашего приложения.
Не могли бы вы пример привести?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
30.12.2013, 23:09 #4
Сделайте чтоб строка хранилась в коде как-то так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Random;
public class Test {
    
    public static void main(String[] args)  {
        long data[] = {-9223372034636481721L, -9223372034228157134L, 
                       -9223372033588676975L, -9223372033144688292L, 
                                              -9223372033006071426L};
        StringBuffer tmp = new StringBuffer();
        tmp.append((char) new Random(data[4]).nextInt())
        .append((char) new Random(data[3]).nextInt())
        .append((char) new Random(data[1]).nextInt())
        .append((char) new Random(data[0]).nextInt())
        .append((char) new Random(data[3]).nextInt())
        .append((char) new Random(data[2]).nextInt());
        System.out.println(tmp.toString());
    }
}
Даже без декомпиляции не так то просто понять, что программа напечатает слово "secret" :-)
Конечно это не панацея, но это лучше чем хранить её в открытом виде.
1
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
30.12.2013, 23:28  [ТС] #5
И в правду не совсем понятно, подкажите как она работает?
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
31.12.2013, 11:56 #6
Цитата Сообщение от suvorov Посмотреть сообщение
подкажите как она работает?
Код работает за счёт новогоднего волшебства

Параметр передаваемый в конструктор класса Random подобран таким образом, что первый вызов метода nextInt будет всегда возвращать код который соответствует символу s,e,c,r или t (пять чисел в массиве data). Ну и собственно код выполняет генерацию псевдослучайных чисел которые потом приводятся в char и записываются в переменную tmp
0
MegaSinner
91 / 87 / 3
Регистрация: 09.04.2010
Сообщений: 746
01.01.2014, 05:42 #7
suvorov, попробуйте дэкомпильнуть тот винегрет, который получается при использовании ProGuard при компиляции...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2014, 05:42
Привет! Вот еще темы с ответами:

Запуск приложения из другого приложения - Программирование Android
Собственно вопрос уже назван в теме: есть приложение, как по нажатии кнопки запустить другое, которое уже есть в системе Android? Как это...

Запуск приложения из другого приложения - Программирование Android
Привет товарищи! Имеется два приложения. Задача следующая: Из первого приложения запустить второе, да так, что бы второе приложение...

Защита контента - Программирование Android
Вопрос скорее философский. Есть приложение с неким уникальным контентом (картинки). Приложение не будет распространяться через Маркет,...

Защита apk - Программирование Android
Есть игра, которую хочу выложить в плей маркет. В игре реализованы рекорды, которые хранятся на сервере. Что, если злоумышленник вытащит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
01.01.2014, 05:42
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru