Я знаю Java и изучал C, но никогда не использовал его. Я не знаю какой-либо формы сборки, как для виртуальной машины, так и для реальной.
Какой лучший способ научиться взломать Smali?
Я знаю Java и изучал C, но никогда не использовал его. Я не знаю какой-либо формы сборки, как для виртуальной машины, так и для реальной.
Какой лучший способ научиться взломать Smali?
ОБНОВЛЕНИЕ: Как я и обещал вчера, я добавил еще несколько ссылок на список.
Ufff. Не так много документации! Лучший совет? Декомпилируйте, прочитайте и настройте, и посмотрите, как это произошло, и начните цикл снова и снова. Но вы не просили совета, верно?;)
Теперь есть несколько мест, которые немного отличаются:
http://androidcracking.blogspot.com/search/label/smali Это лучший. Я даже спросил у парня вопрос, и он ответил очень быстро, поэтому иди и посмотри.
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Очень обширная таблица - хорошая ссылка!
http://webchat.freenode.net/?channels=smali Я никогда не пробовал, но это на кодовой странице google автора baksmali (http://code.google.com/p/smali/)
http://forum.xda-developers.com/showthread.php?t=777707 Наконец, это сообщение, которое я сделал некоторое время назад, описывая некоторые хаки для камеры Captivate. Вы можете следить за различиями там, так как я немного комментирую, что делает каждый файл .diff. Хороший материал начинается с поста # 20.
http://www.slideshare.net/paller/understanding-the-dalvik-bytecode-with-the-dedexer-tool Интересное слайд-шоу с некоторыми базовыми понятиями. Хороший способ начать.
http://sites.google.com/site/haynesmathew/home/projects/dalvik-notes Еще более низкий уровень, чем типичный .smali. Ссылка на последующее, но хорошее чтение.
http://jasmin.sourceforge.net/guide.html Синтаксис Smali основан на Jasmin, поэтому это дает хорошие понятия.
http://groups.google.com/group/apktool?pli=1 Некоторые обсуждения там стоит прочитать. Также хорошее место для поиска, когда вы застряли в чем-то.
И последнее, но не менее важное: самый полезный трюк, который я использовал: начните кодирование очень простых классов и методов в java, скомпилируйте их, а затем baksmali свой собственный код. Вы точно знаете, что он делает, поэтому будет намного легче следовать.
Удачи!
Я по-прежнему удивляюсь, что люди не используют официальные документы формата Dalvik в качестве основной ссылки. В старых версиях документы Dalvik находятся в источнике Android в dalvik/docs. Конкретный файл, который вы хотите посмотреть, называется dalvik-bytecode.html. Несколько выпусков назад, определение байт-кода стало частью документации разработчика android.com:
dalvik-bytecode.html на source.android.com
В качестве дополнительного удобства я иногда отражаю эти документы на своем личном веб-сайте. В этом случае:
У меня есть пара страниц вики на сайте smali с некоторой информацией:
http://code.google.com/p/smali/wiki/Registers
http://code.google.com/p/smali/wiki/TypesMethodsAndFields
И есть примеры smali-кода, которые используют каждый код операции в тестах интеграции для smali/baksmali:
Этот онлайн-конвертер Java-2-Smali должен быть полезен для изучения Smali.