apktool和baksmali之间的差异

时间:2017-03-30 07:19:34

标签: android decompiler smali apktool

据我所知,apktool和baksmali都可以用.apk(.dex)文件生成smali代码,而apktool则使用dexlib2。它们都是APK包装/拆包工具

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

PS: 我刚刚发现的一个不同之处是apktool能够在apk中使用多个dex文件,而baksmali则不能(至少暂时)

我确实尝试阅读源代码,但由于缺乏经验,我无法真正理解这两种工具的工作流程。我真的很感激如果有人能提出一些读数或流程图等等。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

还有一件事要说,apktool能够提取和打包资源文件。 (我相信baksmali没有这样做,需要检查。)

答案 1 :(得分:1)

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

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