Quelle est la meilleure façon d’apprendre Smali (et comment / quand utiliser les opcodes Dalvik VM)?

Je connais Java et j’ai appris C mais je ne l’ai jamais utilisé. Je ne connais aucune forme d’assemblage, que ce soit pour une machine virtuelle ou réelle.

Quelle est la meilleure façon d’apprendre à pirater Smali?

MISE À JOUR: Comme je l’ai promis hier, j’ai ajouté quelques liens supplémentaires à la liste.

Ufff. Pas beaucoup de documentation autour! Meilleur conseil? Décomstackz, lisez, ajustez et voyez comment cela s’est passé, et recommencez le cycle encore et encore. Mais vous n’avez pas demandé ce conseil, non? 😉

Maintenant, il y a quelques endroits là-bas qui vous aideront un peu:

http://androidcracking.blogspot.com/search/label/smali C’est le meilleur. J’ai même posé une question au gars et il a répondu très rapidement, alors va y faire un tour.

http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Tableau très complet – bonne référence!

http://webchat.freenode.net/?channels=smali Je ne l’ai jamais essayé, mais c’est sur la page de codes de Google de l’auteur de baksmali ( http://code.google.com/p/smali/ )

http://forum.xda-developers.com/showthread.php?t=777707 Enfin, il s’agit d’un article que j’ai écrit il ya quelque temps, décrivant des piratages sur la caméra Captivate. Vous pouvez suivre les diffs là-bas pendant que je commente un peu ce que fait chaque fichier .diff. Les bonnes choses commencent au poste n ° 20.

http://www.slideshare.net/paller/understanding-the-dalvik-bytecode-with-the-dedexer-tool Diaporama intéressant avec quelques concepts de base. Bonne façon de commencer.

http://sites.google.com/site/haynesmathew/home/projects/dalvik-notes Encore plus bas que le .smali typique. Une référence pour plus tard, mais une bonne lecture.

http://jasmine.sourceforge.net/guide.html La syntaxe Smali est basée sur Jasmin, ce qui donne de bons concepts.

http://groups.google.com/group/apktool?pli=1 Certaines discussions méritent d’être lues. Aussi un bon endroit pour chercher quand vous êtes coincé dans quelque chose.

Et enfin, le truc le plus utile que j’ai utilisé: commencez à coder des classes et des méthodes très basiques en Java, comstackz-les puis baksmali votre propre code. Vous savez exactement ce que ça fait, donc ce sera beaucoup plus facile à suivre.

Bonne chance!

Je continue d’être surpris que les gens n’utilisent pas les documents officiels au format Dalvik comme référence. Sur les anciennes versions, les documents Dalvik sont dans la source Android sous dalvik / docs. Le fichier que vous voulez examiner est appelé dalvik-bytecode.html. Quelques versions de la définition de bytecode ont été intégrées aux documents de développement d’android.com:

dalvik-bytecode.html sur source.android.com

Pour plus de commodité, je reflète parfois ces documents sur mon site Web personnel. Dans ce cas:

dalvik-bytecode.html sur milk.com

J’ai quelques pages wiki sur le site smali avec quelques informations:

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

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

Et il y a des exemples de code smali qui utilisent chaque opcode dans les tests d’intégration pour smali / baksmali:

tests d’intégration smali