Как лучше всего изучить Smali (и как / когда использовать коды операций Dalvik VM)? - PullRequest
58 голосов
/ 14 апреля 2011

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

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

Ответы [ 3 ]

100 голосов
/ 14 апреля 2011

ОБНОВЛЕНИЕ: Как я и обещал вчера, я добавил еще несколько ссылок в список.

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

Удачи!

15 голосов
/ 15 апреля 2011

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

dalvik-bytecode.html на source.android.com

В качестве дополнительного удобства я иногда отражаю эти документы на моем личном веб-сайте. В этом случае:

dalvik-bytecode.html на milk.com

10 голосов
/ 16 апреля 2011

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

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

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

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

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

...