java - smali que es
¿Cuál es la mejor manera de aprender Smali(y cómo/cuándo usar los códigos de operación Dalvik VM)? (3)
Conozco Java y aprendí C, pero nunca lo usé. No conozco ninguna forma de ensamblaje, ya sea para una máquina virtual o real.
¿Cuál es la mejor manera de aprender a hackear a Smali?
Tengo un par de páginas wiki en el sitio smali con algo de información:
http://code.google.com/p/smali/wiki/Registers
http://code.google.com/p/smali/wiki/TypesMethodsAndFields
Y hay ejemplos de código smali que usan cada código de operación en las pruebas de integración para smali / baksmali:
ACTUALIZACIÓN: Como prometí ayer, agregué algunos enlaces a la lista.
Ufff. ¡No hay mucha documentación! ¿Mejor consejo? Descompile, lea, ajuste y vea cómo sucedió, y comience el ciclo una y otra vez. Pero no pediste ese consejo, ¿verdad? ;)
Ahora, hay algunos lugares que ayudarán un poco:
http://androidcracking.blogspot.com/search/label/smali Este es el mejor. Incluso le hice una pregunta al chico y él respondió muy rápido, así que ve y echa un vistazo.
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Tabla muy completa - ¡buena referencia!
http://webchat.freenode.net/?channels=smali Nunca lo intenté, pero está en la página de códigos de google del autor baksmali ( http://code.google.com/p/smali/ )
http://forum.xda-developers.com/showthread.php?t=777707 Por último, esta es una publicación que hice hace un tiempo describiendo algunos hacks a la cámara Captivate. Puede seguir los diffs allí mientras comente un poco sobre lo que está haciendo cada archivo .diff. Lo bueno comienza en la publicación # 20.
http://www.slideshare.net/paller/understanding-the-dalvik-bytecode-with-the-dedexer-tool Interesante presentación de diapositivas con algunos conceptos básicos. Buena forma de comenzar
http://sites.google.com/site/haynesmathew/home/projects/dalvik-notes Aún más bajo nivel que el típico .smali. Una referencia para más adelante, pero una buena lectura.
http://jasmin.sourceforge.net/guide.html La sintaxis de Smali se basa en Jasmin, por lo que ofrece buenos conceptos.
http://groups.google.com/group/apktool?pli=1 Algunas discusiones que vale la pena leer. También es un buen lugar para buscar cuando estás atrapado en algo.
Y por último, pero no por ello menos importante, el truco más útil que utilicé: empezar a codificar clases y métodos muy básicos en Java, compilarlos y luego copiar tu propio código. Usted sabe exactamente lo que hace, por lo que será mucho más fácil de seguir.
¡Buena suerte!
Sigo sorprendiéndome de que la gente no utilice los documentos oficiales en formato Dalvik como referencia principal. En versiones anteriores, los documentos de Dalvik están en la fuente de Android bajo dalvik / docs. El archivo particular que querrá ver se llama dalvik-bytecode.html. Algunas versiones de la definición de bytecode se convirtieron en parte de los documentos para desarrolladores de android.com:
dalvik-bytecode.html en source.android.com
Como una conveniencia adicional, ocasionalmente reflejo estos documentos en mi sitio web personal. En este caso: