Hacking Android...
Mar. 11th, 2011 02:41 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Как подправить что-то в чужом приложении. Точнее, как заставить это потом работать.
1. Берём apk, разархивируем его, как обычный zip.
2. Из важных файлов в корне будут resources.arsc, classes.dex, Правим их. Насколько я понял, исходники ресурсов лежат в каталоге res, но там править что-либо бесполезно, т.к. всё уже скомпилировано в arsc.
3. Если dex редактировался, то нужно поменять его чек-суммы внутри. Байты 12..31 (здесь и далее нумерация с нуля) -- это SHA1 содержимого файла, начиная с байта 32, а байты 8..11 -- это Adler32-сумма SHA1+всего остального. Пересчитать чек-суммы можно с помощью java-программы (я её запостил также в коммент).
3.1. Компилируем программу: javac ReDEX.java
3.2. Запускаем: java ReDEX classes.dex
3.3. Вручную правим байты 8..31 (например, с помощью HxD или Vim+xxd)
4. Теперь всё что нужно, это запаковать и подписать архив:
4.1. Убираем каталог META-INF, т.к. у нас будет свой.
4.2. Архивируем в обычный zip-файл. Можно и со сжатием 9.
4.3. Генерируем свой ключ с помощью джавовской утилиты: cd C:\Java && mkdir keys &&
keytool -v -genkey -alias yourname.keystore -keyalg RSA -validity 20000 -keystore keys/yourname.keystore (введите: Password... Password... YourName..., потом ENTER 5 раз, потом yes, потом опять ENTER)
4.4. Подписываем архив:
jarsigner -keystore keys\yourname.keystore -signedjar result.archive.apk source.archive.name.apk yourname.keystore
4.5. Внутри архива будет создан каталог META_INF с тремя файлами - ключом и двумя файлами сигнатур.
5. Всё. Можно копировать в андрофон и инсталлировать.
no subject
Date: 2011-03-11 12:42 pm (UTC)