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

x33g5p2x  于 2022-12-28  发布在  Android
关注(0)|答案(3)|浏览(167)

我懂Java,也学过C,但从来没用过,我不懂任何形式的汇编,不管是虚拟机还是真实的的汇编。
学习如何黑进Smali的最好方法是什么?

zwghvu4y

zwghvu4y1#

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

唉。周围没有多少文档!最好的建议?反编译,阅读,调整,看看它是怎么做的,然后一次又一次地开始循环。但你没有征求这些建议,对吗?)
现在,有几个地方可以帮上一点忙:
http://androidcracking.blogspot.com/search/label/smali这是最好的一个,我甚至问了那个家伙一个问题,他回答得非常快,所以去看看吧。
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html非常全面的表格-很好的参考!
http://webchat.freenode.net/?channels=smali我从来没有尝试过,但它在baksmali作者的google代码页上(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编写非常基本的类和方法,编译它们,然后编写你自己的代码。你确切地知道它做什么,所以它会更容易跟随。

eqfvzcg8

eqfvzcg82#

我仍然很惊讶人们不使用官方的Dalvik格式文档作为主要参考。在旧版本中,Dalvik文档在Android源代码中的dalvik/docs下。您需要查看的特定文件名为dalvik-bytecode.html。在几个版本中,字节码定义成为android.com开发者文档的一部分:
dalvik-bytecode.html on source.android.com
为了方便起见,我偶尔会在个人网站上镜像这些文档。在这种情况下:
dalvik-bytecode.html on milk.com

6ojccjat

6ojccjat3#

我在smali网站上有几个wiki页面提供了一些信息:
https://github.com/JesusFreke/smali/wiki/Registers
https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields
还有一些smali代码的示例,它们使用smali/baksmali集成测试中的每个操作码:
小型集成测试

相关问题