Каков наилучший способ узнать Smali (и как/когда использовать коды операций Dalvik VM)?


Я знаю Java, и узнал C, но никогда не использовал его. Я не знаю никакой формы сборки, ни для виртуальной машины, ни для реальной.

каков лучший способ узнать, как взломать Smali?

3 51

3 ответа:

обновление: как я и обещал вчера, я добавил еще несколько ссылок в список.

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, скомпилируйте их, а затем баксмали свой собственный код. Вы точно знаете, что он делает, так будет намного легче следовать.

удачи!

Я по-прежнему удивляюсь, что люди не используют официальные документы формата Dalvik в качестве основной ссылки. В более старых версиях документы Dalvik находятся в исходном коде Android в разделе dalvik / docs. Конкретный файл, который вы хотите посмотреть, называется dalvik-bytecode.формат html. Несколько выпусков назад определение байт-кода стало частью android.com документы разработчика:

dalvik-байт-код.html on source.android.com

в качестве дополнительного удобства, я иногда зеркало этих документов на моем личном сайте. В этом случае:

dalvik-байт-код.html on milk.com

У меня есть несколько вики-страниц на сайте smali с некоторой информацией:

http://code.google.com/p/smali/wiki/Registers

http://code.google.com/p/smali/wiki/TypesMethodsAndFields

и есть примеры кода smali, которые используют каждый код операции в интеграционных тестах для smali / baksmali:

интеграционные тесты smali