学习Smali(以及如何/何时使用Dalvik VM操作码)的最佳方式是什么?

我认识Java,学过C但从未使用过。 我不知道任何forms的组装,无论是虚拟机还是真正的组装。

学习如何入侵Smali最好的方法是什么?

更新:正如我昨天承诺,我添加了一些链接到列表。

UFFF。 没有太多的文件! 最好的build议? 反编译,阅读和调整,看看它是如何做的,并一次又一次地开始循环。 但是你没有要求这个build议,对吧? ;)

现在,有一些地方会有一些帮助:

http://androidcracking.blogspot.com/search/label/smali这是最好的一个。; 我甚至问过这个人一个问题,他很快回答,所以去看看。

http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html非常全面的表格; – 很好的参考!

http://webchat.freenode.net/?channels=smali我从来没有尝试过,但它在baksmali作者(; http://code.google.com/p/smali/ )的google代码页上,

http://forum.xda-developers.com/showthread.php?t=777707最后,这是我前段时间描述Captivate相机的一些窍门。; 你可以按照diff中的内容,因为我对每个.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开发者文档的一部分:

在source.android.com上的dalvik-bytecode.html

作为一个额外的便利,我偶尔在我的个人网站上反映这些文档。 在这种情况下:

dalvik-bytecode.html在milk.com上

我在smali网站上有几个维基页面,提供一些信息:

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

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

在smali / baksmali集成testing中,有一些使用每个操作码的smali代码示例:

smali集成testing