从.apk文件获取源代码?[关闭]


21

有了.apk文件,有什么办法可以获取其源代码?


7
在此之前,您是否检查过软件包是否是开源的?
ott-- 2012年

.apk只是.zip文件。但不幸的是,任何用于“发行”的应用程序构建都可能会受到ProGuard的保护
丹尼尔·洛佩兹

@MatthewRead Op询问他是否可以从api获取代码,我回答了这种现象的含义以及至少可以防止制作类似应用程序的方法。他没有说如何防止获取代码,所以是的,它的确回答了这个问题。
人类

Answers:



11

如果您很幸运并且您的.apk文件不受Proguard或模拟文件的保护,则可以使用APK工具。它是用于反向工程第三方,封闭的二进制Android应用程序的工具。


Apktool只生成Smali代码,而不生成Java代码-这是一个很大的差异。
罗伯特

2

来自Parnkul Garg在其中的一个社区Wiki


.apk文件解码过程,分步方法:

步骤1:

  1. 新建一个文件夹,然后复制要解码的.apk文件。

  2. 现在,将此.apk文件的扩展名重命名为.zip(例如,从filename.apk重命名为filename.zip)并保存。现在,您可以访问classes.dex文件等。在此阶段,您可以看到drawables,但是看不到xml和java文件,因此继续。

第2步:

  1. 现在,将此.zip文件解压缩到同一文件夹(或NEW FOLDER)中。

  2. 下载dex2jar并将其压缩到同一文件夹(或NEW FOLDER)。

  3. 将classes.dex文件移动到dex2jar文件夹中。

  4. 现在打开命令提示符,并将目录更改为该文件夹(或NEW FOLDER)。然后编写d2j-dex2jar classes.dex并按Enter。现在,您在同一文件夹中有classes.dex.dex2jar文件。

  5. 下载java decompiler,双击jd-gui,单击打开文件,然后从该文件夹中打开classes.dex.dex2jar文件:现在,您获得了类文件。

  6. 通过src名称保存所有这些类文件(在jd-gui中,单击File-> Save All Sources)。在此阶段,您获得了Java源代码,但是.xml文件仍然不可读,因此继续。

第三步:

现在打开另一个新文件夹

  1. 放入您要解码的.apk文件

  2. 下载最新版本的apktool apktool安装窗口(均可从同一链接下载)并将它们放置在同一文件夹中

  3. 下载framework-res.apk并将其放置在同一文件夹中(并非所有apk文件都需要该文件,但不会造成伤害)

  4. 打开命令窗口

  5. 导航到APKtool的根目录,然后键入以下命令: apktool if framework-res.apk

  6. apktool d myApp.apk (其中myApp.apk表示要解码的文件名)

现在,您在该文件夹中获得一个文件夹,并且可以轻松读取apk的xml文件。

第四步:

只需将两个文件夹(在本例中均为两个新文件夹)的内容复制到单个文件夹中,就没有任何步骤

并享受源代码...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.