2013-11-14 1 views
0

Я пытался упаковать apk с зашифрованными активами (изображение, текст и т. Д.).
Когда он запущен на Android, активы будут дешифрованы и затем отображены (конечно, я жестко закодировал ключ дешифрования в исходном коде).
я думаю: до тех пор, как исходный код защищен, то ключ дешифрования также будет защищена, что означает активы наконец защищены?Является ли ProGuard или JNI защитой активов, хранящихся в Android-файле Android?

Вопросы:
1. Если ProGuard используется для запутывания APK, ключ дешифрования безопасного?
2. Если я закодирую ключ дешифрования в JNI (C++) и пусть JNI делает дешифрование, является ли ключ дешифрования безопаснее?

Я также сделал 2 демонстрационных приложения Android с зашифрованными активами, которые вы можете попробовать взломать.
Первая использует обфусцированный Java для расшифровки активов с ключом AES (жестко закодированным в Java):
https://drive.google.com/file/d/0B9O3ChlSQJL1dVZUZmFtWlRyMXc/edit?usp=sharing

Второй использует JNI для расшифровки активов с ключом AES (жестко в JNI):
https://drive.google.com/file/d/0B9O3ChlSQJL1UWU0VlprcXdVUjg/edit?usp=sharing

Если вы можете получить первоначальные активы в первом демо, пожалуйста, дайте мне знать.
Если вы можете получить исходные активы во втором демо, пожалуйста, дайте мне знать.
Любые предложения по лучшим решениям для защиты активов оцениваются!

+1

Немного не по теме, но вы понимаете, что 4shared требует от пользователей иметь учетную запись (или создавать ее) для загрузки файлов? Просто указывая на это, потому что это создает дополнительное препятствие, которое может привести к тому, что люди теряют интерес к тому, чтобы помочь вам здесь. –

+0

Спасибо за совет! Теперь они связаны с Google Диском. – user2990181

+0

Данные будут тривиальны для восстановления, запустив приложение на модифицированной платформе, где система требует отображения/воспроизведения информации, которые предназначены для захвата и сохранения информации. –

ответ

1

Не смотря на ваш код, никакая обфускация не собирается на 100% скрывать секретный ключ «в ясном».

+0

Спасибо! Но что, если ключ написан на C/C++ через JNI, теперь скрывается ключ? – user2990181

+0

@ user2990181 Нет, его все еще в библиотеке, точно, как вы его ввели. Это не имя переменной, которое вы пытаетесь запутать, ее данные. Его не удастся найти, но сложно. Если это «достаточно» защиты, которая вам нужна, тогда идите. – Samhain

Смежные вопросы