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

2022-08-31 14:08:07

我了解Java,学习过C语言,但从未使用过它。我不知道任何形式的汇编,无论是虚拟机还是真实的组装。

学习如何破解Smali的最佳方法是什么?


答案 1

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

乌夫夫。周围没有太多的文档!最好的建议?反编译,阅读,调整,看看它是如何做到的,然后一次又一次地开始循环。但你没有问过这个建议,对吧?;)

现在,有几个地方会稍微帮助一下:

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.htmlSmali语法基于Jasmin,因此这给出了很好的概念。

http://groups.google.com/group/apktool?pli=1那里的一些讨论值得一读。当你被困在某件事上时,这也是一个搜索的好地方。

最后,但并非最不重要的一点是,我使用了最有用的技巧:开始用java编写非常基本的类和方法,编译它们,然后烘焙自己的代码。您确切地知道它的作用,因此遵循它将容易得多。

祝你好运!


答案 2

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

dalvik-bytecode.html on source.android.com

为了提供额外的方便,我偶尔会在我的个人网站上镜像这些文档。在这种情况下:

dalvik-bytecode.html on milk.com


推荐