Android: файлы .java для чтения из файла .apk? - PullRequest
1 голос
/ 30 января 2011

В настоящее время я разрабатываю приложение для компании, которое включает livescoring. XML-файлы, к которым я обращаюсь (из сети вроде: "http://company.com/files/xml/livescoring.xml") не предназначены для публичного использования и должны быть известны только мне.

Мне было интересно, можно ли кому-нибудь декодировать файл .apk и прочитать мои оригинальные файлы .java (которые содержат ссылку на файлы XML).

Итак, я переименовал файл .apk в .zip и смог получить доступ к "classes.dex", который, казалось, включал файлы .java (или классы). Поиск в Google привел меня к инструменту под названием «AvaBoxV2», который расшифровал этот файл «classes.dex». Теперь у меня есть папка с папкой «out», в которой существуют файлы с именем .smali. Я открываю один из них с помощью редактора и, наконец, есть ссылка на XML-файл. Нехорошо. (

Есть ли способ зашифровать мое приложение или файл classes.dex? Я не хочу говорить этой компании, что любой может получить доступ к оригинальным XML-файлам. Может быть, подписывание приложения, вероятно, поможет?

Кроме того, знаете ли вы действительно удобный для новичков учебник по подготовке приложений (подписывание, управление версиями, ...) для Google Market?

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 30 января 2011

Исходный код .java не включен в APK.

Можно разобрать байт-код Dalvik в мнемонику байт-кода, используя такой инструмент, как baksmali, но пользователь никак не сможет восстановить исходный источник .java.

Кроме того, вы можете использовать такой инструмент, как proguard (входит в состав Android SDK), чтобы запутать ваш байт-код, затрудняя интерпретацию поведения дизассемблированного байт-кода.

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

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

2 голосов
/ 30 января 2011

Да, невозможно полностью предотвратить что-то подобное. То же самое в настольном приложении или любом другом приложении.

Как уже упоминалось, запутывание поможет, но люди, которые настойчивы, все еще могут пройти через это. Особенно для чего-то вроде URL.

Одним из решений сделать его более сложным для хакеров является использование PHP на вашем веб-сервере и какая-то система токенов, чтобы определить, поступает ли запрос из вашего приложения или нет ... Хотя это будет немного сложнее, поэтому Я действительно не предлагаю это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...