据我所知,apktool和baksmali都可以用.apk(.dex)文件生成smali代码,而apktool则使用dexlib2。它们都是APK包装/拆包工具
但我还不清楚apktool和smali / baksmali之间的主要区别是什么。在.dex文件和扩展功能的功能方面有什么作用?
PS: 我刚刚发现的一个不同之处是apktool能够在apk中使用多个dex文件,而baksmali则不能(至少暂时)
我确实尝试阅读源代码,但由于缺乏经验,我无法真正理解这两种工具的工作流程。我真的很感激如果有人能提出一些读数或流程图等等。
谢谢!
答案 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文件解包回标准文本格式等。