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

Ken*_*der 61 java android dalvik smali

我认识Java,并且学过C但从未使用它.我不知道任何形式的组装,无论是虚拟机还是真实机器.

学习如何攻击Smali的最佳方法是什么?

Ale*_*dam 102

更新:正如我昨天所承诺的那样,我在列表中添加了更多链接.

UFFF.周围的文档不多!最好的建议?反编译,阅读和调整,看看它是如何做的,并一次又一次地开始循环.但你没有要求这个建议,对吗?;)

现在,有一些地方可以帮助我一点点:

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/)

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中开始编写非常基本的类和方法,编译它们然后baksmali你自己的代码.你确切知道它的作用,所以跟随它会容易得多.

祝好运!


dan*_*uzz 15

我仍然感到惊讶的是,人们不使用官方的Dalvik格式文档作为主要参考.在旧版本中,Dalvik文档位于dalvik/docs下的Android源代码中.您想要查看的特定文件名为dalvik-bytecode.html.几个版本回字节码定义成为android.com开发人员文档的一部分:

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

为了方便起见,我偶尔会在我的个人网站上反映这些文档.在这种情况下:

在milk.com上的dalvik-bytecode.html

  • 感兴趣的任何人的更新:dalvik-bytecode文档现在可以在android网站上找到.http://source.android.com/tech/dalvik/dalvik-bytecode.html (8认同)

Jes*_*eke 10

我在smali网站上有几个wiki页面,其中包含一些信息:

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

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

还有一些smali代码的例子,它们在smali/baksmali的集成测试中使用每个操作码:

smali集成测试