70 votes

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

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

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

111voto

Aleadam Points 25433

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

Ufff. Il n'y a pas beaucoup de documentation ! Le meilleur conseil ? Décompiler, et lire, et bidouiller, et voir ce que ça donne, et recommencer le cycle encore et encore. Mais vous n'avez pas demandé ce conseil, n'est-ce pas ? ;)

Il y a quelques endroits qui peuvent vous aider 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 allez-y et jetez un coup d'œil.

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

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

http://forum.xda-developers.com/showthread.php?t=777707 Enfin, voici un post que j'ai fait il y a quelque temps décrivant quelques bidouillages de la caméra de Captivate. Vous pouvez suivre les diffs car je commente un peu ce que chaque fichier .diff fait. Les bonnes choses commencent au post #20.

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

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

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

http://groups.google.com/group/apktool?pli=1 Certaines discussions valent la peine d'être lues. C'est aussi un bon endroit pour faire des recherches lorsque vous êtes coincé dans quelque chose.

Et enfin, l'astuce la plus utile que j'ai utilisée : commencez à coder des classes et des méthodes très basiques en java, compilez-les et ensuite baksmali votre propre code. Vous savez exactement ce qu'il fait, il sera donc beaucoup plus facile à suivre.

Bonne chance !

16voto

danfuzz Points 2856

Je continue à être surpris que les gens n'utilisent pas les documents officiels du format Dalvik comme référence principale. Sur les anciennes versions, les documents Dalvik se trouvent dans les sources d'Android sous dalvik/docs. Le fichier que vous souhaitez consulter s'appelle dalvik-bytecode.html. Il y a quelques versions, la définition du bytecode a été intégrée dans la documentation pour les développeurs d'Android.com :

dalvik-bytecode.html sur source.Android.com

Pour plus de commodité, je mets occasionnellement ces documents en miroir sur mon site web personnel. Dans ce cas :

dalvik-bytecode.html sur milk.com

0 votes

Tu m'as devancé ! :) Aussi : au lieu de vérifier les sources complètes d'Android, vous pouvez récupérer juste le git de dalvik. git clone git://Android.git.kernel.org/platform/dalvik.git

0 votes

Tant de recherches sur ce sujet et je n'ai jamais atterri sur la page git de dalvik... Merci pour le lien !

8 votes

Mise à jour pour tous ceux qui sont intéressés : le document dalvik-bytecode est maintenant disponible sur le site Android. source.Android.com/tech/dalvik/dalvik-bytecode.html

12voto

JesusFreke Points 7447

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

https://github.com/JesusFreke/smali/wiki/Registers

https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields

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

tests d'intégration de smali

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X