簡體   English   中英

從 APK 文件逆向工程到項目

[英]Reverse engineering from an APK file to a project

我不小心從Eclipse 中刪除了我的項目,剩下的就是我傳輸到手機上的APK文件。 有沒有辦法逆轉將應用程序導出到 .apk 文件的過程,以便我可以恢復我的項目?

有兩個有用的工具可以從未知的 APK 文件生成 Java 代碼(粗略但足夠好)。

  1. dex2jar下載 dex2jar 工具。

  2. 使用該工具將 APK 文件轉換為JAR : Windows:

     $ d2j-dex2jar.bat demo.apk dex2jar demo.apk -> ./demo-dex2jar.jar

    MacOS/Linux:

     $ d2j-dex2jar.sh -f demo.apk -o demo.jar
  3. 生成 JAR 文件后,使用JD-GUI打開 JAR 文件。 您將看到 Java 文件。

輸出將類似於:

京東圖形界面

然后您可以使用其他工具從 APK 文件中檢索 AndroidManifest.xml 和資源文件(如圖像、翻譯等)。

首先,我推薦this視頻可能會清除你所有的疑慮

如果沒有,請通過它

Procedure for decoding .apk files, step-by-step method:

Step 1:

創建一個新文件夾並將 .apk 文件放入其中(您要解碼)。 現在將此.apk文件的擴展名重命名為.zip (例如:從 filename.apk 重命名為 filename.zip)並保存它。

如果在轉換為 .zip 時出現問題,請參閱link

獲得 .zip 后,您將獲得 classes.dex 文件等。在此階段,您可以看到 drawable 但不能看到 xml 和 java 文件,所以繼續。 如果您沒有看到擴展通過檢查配置

Step 2:

現在將這個 zip apk 文件解壓縮到同一文件夾中。 現在從此link下載 dex2jar

並將其解壓縮到同一文件夾中。 現在打開命令提示符並將目錄更改為該文件夾。

然后編寫dex2jar classes.dex並回車。 現在您將在同一文件夾中獲得classes.dex.dex2jar文件。

然后下載java反編譯器

現在雙擊 jd-gui 並單擊打開文件。 然后從該文件夾打開classes.dex.dex2jar文件。 現在您獲得類文件並按 src 名稱保存所有這些類文件(單擊文件,然后在 jd-gui 中單擊“保存所有源”)。 解壓縮該 zip 文件(classes_dex2jar.src.zip) ,您將獲得該應用程序的所有 java 文件。

在這個階段,你得到了 java 源代碼,但 xml 文件仍然無法讀取,所以繼續。

Step 3:

現在打開另一個新文件夾並放置這些文件

  1. 放入要解碼的 .apk 文件

  2. 下載 Apktool for windows v1.xApktool

使用谷歌安裝窗口並放在同一個文件夾中

  1. 使用google下載framework-res.apk文件並放在同一個文件夾中(並非所有apk文件都需要framework-res.apk文件)

  2. 打開命令窗口

  3. 導航到 APKtool 的根目錄並鍵入以下命令: apktool if framework-res.apk.

上面的命令應該導致Framework installed ...Framework installed ...

  1. apktool d "appName".apk(“appName”表示您要解碼的應用程序)現在您在該文件夾中獲得了一個文件夾,現在您也可以輕松讀取 xml 文件。

Step 4:最后我們得到了res/以及項目的java代碼,這是我們開始時的目標。

PS如果您無法通過上述步驟獲取 res 文件夾,請安裝新的apktool

  • 是否安裝了 Java 1.7? 安裝 Apktool 2.x
  • 是否安裝了 Java 1.6 或更高版本? 安裝 Apktool 1.x

Enjoy and happy coding

沒有軟件,沒有太多的步驟..

只需上傳您的 APK 並從該站點獲取您的所有資源..

https://www.apkdecompilers.com/

該網站將反編譯嵌入在 APK 文件中的代碼並提取文件中的所有其他資產。

注意:我反編譯我的 APK 文件並在一分鍾內從本網站獲取代碼

更新 1

我找到了另一個在線反編譯器站點,

http://www.javadecompilers.com/apk/ - 不連續工作要求彈出窗口阻止

更新 2:

我在 Play 商店找到了 apk 反編譯器應用程序,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

我們可以在我們的android手機中反編譯apk文件。 並且我們還可以查看此應用程序中的 java 和 xml 文件

更新 3:

我們可以使用Android studio 2.2版本中的另一個選項Analyze APK feature

構建 -> 分析 APK -> 選擇你的 APK -> 它給出結果

在此處輸入圖片說明

有一種新方法可以做到這一點。

Android Studio 2.2 具有 APK 分析器,它將提供有關 APK 的大量信息,請在此處查看:- http://android-developers.blogspot.in/2016/05/android-studio-22-preview-new-ui.html

應用程序

在 Android Studio 3.5 中,您可以在一分鍾內實現它,這太容易了。 以下是一個循序漸進的過程。

1:打開Android Studio,按窗口按鈕->輸入Android Studio->點擊圖標打開android studio啟動畫面,如下所示。

在此處輸入圖片說明

2:在這里你可以看到一個選項“配置文件或調試APK”點擊它並選擇你的apk文件並按確定。

在此處輸入圖片說明

3:它會在一分鍾內打開您所有的清單和 java 類,具體取決於 apk 的大小。

在此處輸入圖片說明

而已。

並不真地。 有許多 dex 反匯編器/反編譯器套件,例如 smalidex2jar ,它們將生成半人類可讀的輸出(在 dex2jar 的情況下,您可以通過使用諸如JD-GUI 之類的東西來獲取 Java 代碼,但過程是並不完美,您不太可能 100% 重新創建源代碼。但是,它可能為您提供一個開始重建源代碼樹的地方。

是的,您可以恢復您的項目。 只需將yourproject.apk文件重命名為yourproject.zip ,您就會獲得該 ZIP 文件中的所有文件。 我們正在將文件擴展名從 .apk 更改為 .zip。 從該 ZIP 文件中,提取classes.dex文件並通過以下方式對其進行反編譯。

首先,您需要一個工具將 DEX 上的所有(已編譯)類提取到 JAR 中。 有一個叫dex2jar 的,是一個中國學生做的。

然后,您可以使用JD-GUI將 JAR 中的類反編譯為源代碼。 生成的源代碼應該非常易讀,因為 dex2jar 應用了一些優化。

對於 Android 平台,您可以嘗試ShowJava ,可從 Play 商店獲得。

您可以通過應用程序界面查看生成的代碼,生成的 java 文件和文件夾結構存儲在/sdcard中的ShowJava文件夾中,以及轉換生成的.jar文件。

該應用程序是免費的,主視圖底部有一個廣告橫幅,但有一個應用程序內購買選項(3.99 美元)可以將其刪除。 除了移除廣告橫幅外,應用內購買不會添加任何功能。

披露:我不是該應用程序的開發者,也不與他有任何關聯。

試試這個工具: https : //decompile.io ,它在 iPhone/iPad/Mac 上運行在此處輸入圖片說明

請按照以下步驟執行此操作或簡單地使用apkToJava gem進行此過程,它甚至會負責安裝所需的工具以使其工作。

  • 將 apk 文件轉換為 zip
  • 解壓文件
  • 從中提取classes.dex
  • 使用dex to jar將classes.dex轉成jar文件
  • 使用jadx gui打開jar文件作為java源代碼

如果您正在尋找專業的替代方案,請查看 PNF Software 的JEB Decompiler

有一個演示版本可以讓您反編譯大多數代碼。

以下是一些可用於執行從 APK 文件到源代碼的逆向工程的工具:

  1. Dex2jar
  2. Java反編譯器
  3. 應用工具
  4. 應用程序分析器

您可能想要使用的另一個工具是APK Studio它依賴於第三方工具:Apktool、jadx、ADB 和 Uber APK 簽名器,您需要單獨下載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM