apktool 和 baksmali 的区别

Lon*_*ong 8 android decompiler smali apktool

据我所知,apktool 和 baksmali 都能够从 .apk (.dex) 文件中生成 smali 代码,而 apktool 使用了 dexlib2。它们都是APK打包/解包工具

但是我仍然不清楚apktool 和 smali/baksmali 之间主要区别是什么在 .dex 文件和扩展功能的功能方面?

PS:我刚刚发现的一个区别是 apktool 能够处理一个 apk 中的多个 dex 文件,而 baksmali 不能(至少目前是这样)

我确实尝试过阅读源代码,但由于缺乏经验,我无法真正理解这两个工具的工作流程。如果有人可以建议一些阅读材料或流程图等,我将不胜感激。

谢谢!

Jes*_*eke 9

smali/baksmali 是 dex 格式的汇编器/反汇编器对。Baksmali 获取一个 dex 文件并生成人类可读的程序集,而 smali 获取人类可读的程序集并生成一个 dex 文件。

Apktool 是用于解包和重新打包 apk 的更通用的工具。它实际上在引擎盖下使用 smali/baksmali 来组装/反汇编 dex 文件。它还将二进制资源和二进制 xml 文件解压回标准文本格式等。


Ili*_*ski 6

简而言之,apktool适用于APK文件,baksmali适用于DEX文件。

APK文件是具有特定结构的 zip 存档。这代表 Android 应用程序。这是您的智能手机或平板电脑从市场(通常是 Google Play)下载的内容。存档由清单、资源、断言/数据文件、本机库和DEX文件组成。

DEX文件包含应用程序代码。有关详细信息,请参阅https://source.android.com/devices/tech/dalvik/dex-format.html

还要说的一件事apktool是能够提取和打包资源文件。(我相信baksmali不会那样做,需要检查。)

  • 该非官方参考资料非常古老,并且基于他在 Android 开源之前对格式的逆向工程。官方文档是..好吧..官方的。而且它好多了 - https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html (2认同)