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

| 我知道Java,学习过C,但是从未使用过。我不知道任何形式的汇编,无论是虚拟机还是真实的汇编。 学习如何破解Smali的最佳方法是什么?     
已邀请:
更新:正如我昨天承诺的那样,我在列表中添加了更多链接。 f周围没有太多文档!最好的建议?进行反编译,读取和调整,然后查看其效果,然后一次又一次地开始循环。但是您没有要求该建议,对吗? ;) 现在,有一些地方会有所帮助: 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文件的功能进行评论时,您可以关注其中的差异。好东西始于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文档位于dalvik / docs下的Android源代码中。您要查看的特定文件称为dalvik-bytecode.html。几个版本的字节码定义已成为android.com开发人员文档的一部分: source.android.com上的dalvik-bytecode.html 为了给您带来更多便利,我有时会在我的个人网站上镜像这些文档。在这种情况下: milk.com上的dalvik-bytecode.html     
我在smali网站上确实有一些Wiki页面,其中包含一些信息: http://code.google.com/p/smali/wiki/寄存器 http://code.google.com/p/smali/wiki/TypesMethodsAndFields 还有一些smali代码示例,这些示例在smali / baksmali集成测试中使用每个操作码: smali集成测试     
此在线Java-2-Smali转换器应有助于学习Smali。 https://java2smali.com/     

要回复问题请先登录注册