国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Android 反編譯指南

opengps / 1297人閱讀

摘要:存放第三方庫存放未經過反編譯的等文件存放資源文件,例如圖片,顏色,字符等。這是初始應用程序的運行效果使用反編譯打開生成的目錄進行修改修改為另一張準備好的圖片注意前后命名一致。

我們下載到的 App 安裝包是 Apk 文件(Android Application Package) 。通過 Apk 文件,我們也可以得到這個應用的代碼和資源文件,對應用進行修改。

那么我們如何獲取這些文件呢?這就需要 Android 反編譯技術

01 所需要的軟件

Apktool

反編譯 xml 文件和 dex 文件,并可以將編譯后的項目重新打包成 apk。
官方下載地址: Apktool
官方的速度有時候不穩定,也可以從我的網盤中下載: 鏈接 密碼:xkao

dex2jar

將 classes.dex 轉換為「.jar」文件)
官方下載地址: dex2jar
我的網盤: 鏈接 密碼:xkao

jd-gui

查看「.jar」文件
官方下載地址: jd-gui
我的網盤: 鏈接 密碼:xkao

02 Apktool

我們可以通過 Apktool 可以將 apk 文件進行反編譯,但是直接把 apk 的擴展名改成「.zip」也可以對其進行解壓并得到一些資源文件。

META-INF 里保存 App 的簽名信息

classes.dex

.dex 是 Dalvik 虛擬機上的可執行文件,需要使用 dex2jar 將其轉換為 jar 文件

AndroidManifest.xml

Android 清單文件,向 Android 系統提供應用的必要信息。

assets

存放一些資源文件字體,聲音等。

lib

存放第三方庫

original

存放未經過反編譯的等 AndroidManifest.xml 文件

res

存放資源文件,例如圖片,顏色,字符等。

smali

smali 里存放的是 java 編譯成的 smali 代碼,smali 相當于 Android 虛擬機上運行的語言。

直接解壓可以得到一些資源文件,但是 AndroidManifest.xml 和其他的 xml 文件都是亂碼,通過 Apktool 進行反編譯,可以最大限度的還原這些文件的內容。

02 - 1 安裝 Apktool

Windows :

到?這里?或者我的 網盤鏈接 里下載好 script 腳本文件,修改名稱「apktool.bat」(如果從我的網盤下載,無須修改名稱)

到?這里?或者我的 網盤鏈接 下載 apktool,然后修改名稱為「apktool.jar」

「apktool.jar」「apktool.bat」移動到 windows 目錄(一般在 C://windwos?下)

在命令行中輸入

$ apktool

?? ??
如果出現

則說明安裝成功,若沒有出現,則需要把「apktool.jar」、「apktool.bat」的路徑添加到系統的環境變量中。

Mac OS:

到?這里?或者我的 網盤鏈接 里下載好 script 腳本文件,修改名稱「apktool」(如果從我的網盤下載,無須修改名稱) 。

到?這里?或者我的 網盤鏈接 下載 apktool,然后修改名稱為「apktool.jar」

「apktool」「apktool.jar」移動到 /usr/local/bin目錄下

在命令行中 cd 到 /usr/local/bin中然后分別輸入下面兩條命令

$ chmod a+x d2j_invoke.sh
$ chmod a+x d2j-dex2jar.sh

在命令行中輸入

$ apktool

出現

則安裝成功

02 - 2 反編譯 Apk

cd 到 apk 的目錄下

輸入

$ apktool d test.apk

運行完成后,得到一個包含資源文件和代碼的文件:

注意:
此時 dex 文件直接反編譯成了 smali 文件,而我們需要的是 .dex 文件。

此時再運行:

$ apktool d -s -f test.apk

-d 反編譯 apk 文件
-s 不反編譯 dex 文件,而是將其保留
-f 如果目標文件夾存在,則刪除后重新反編譯

此時得到這樣的文件夾:

02 - 3 打包、簽名新的 Apk

為了演示如何將修改過后的 Apk 文件重新打包簽名,我寫了一個簡單的 Demo:把 Demo 的背景換了之后,進行打包、簽名。

這是初始應用程序的運行效果:

使用 Apktool 反編譯

打開生成的目錄進行修改

修改 bg.jpg 為另一張準備好的圖片(注意前后命名一致)。

重新打包

$ apktool b b_test -o newtest.apk

-b 是指 build
b_test 是剛才反編譯出的文件所在的目錄
-o 用于指定新的文件名稱,這里指定為「newtest.apk」

得到新的 apk 文件

注意:
此時的 apk 文件是不能安裝的,還需要對其進行簽名。

對新的 Apk 進行簽名:

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testjks -storepass password newtest.apk aliasName

簽名文件是我自己生成的,沒有辦法使用 Apk 原來的簽名進行簽名。

現在將 Apk 安裝一下試試看:

可以看到,背景資源已經成功替換成我們設置的第二張圖片了。

03 dex2jar

下載、解壓好 dex2jar

將上一步得到的 classes.dex 文件(有時候還有 classes2.dex,說明方法數過多,把它當成 classes.dex 處理就好了)復制到 dex2jar 解壓好的目錄中。

在命令行中運行:

$ sh d2j-dex2jar.sh classes.dex

如果提示:

d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied

執行

$ sudo chmod +x d2j_invoke.sh

后再次執行

$ sh d2j-dex2jar.sh classes.dex

運行成功,在當前目錄下生成了 classes-dex2jar.jar 文件。

04 jd-gui

安裝好 jd-gui 之后,用其將 classes-dex2jar.jar 打開,就可以看到反編譯出來的 java 代碼了!

這里的代碼沒有經過混淆,所以命名容易識別,如果是從應用市場下載下來的 apk 文件,反編譯出來的代碼大部分是混淆過后的代碼。

出于對開發者的尊重和為了保持應用的穩定,希望大家不要隨意修改別人的應用程序,請僅從技術層面上妥善利用這一技術!

歡迎關注本文作者:

掃碼關注并回復「干貨」,獲取我整理的千G Android、iOS、JavaWeb、大數據、人工智能等學習資源。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74372.html

相關文章

  • Android 應用防止被二次打包指南

    摘要:接下來,我就來詳解一下如何防止被二次打包。開發階段移動應用開發時接入安全組件,保護數據安全。 前言 Android APP二次打包則是盜版正規Android APP,破解后植入惡意代碼重新打包。不管從性能、用戶體驗、外觀它都跟正規APP一模一樣但是背后它確悄悄運行著可怕的程序,它會在不知不覺中浪費手機電量、流量,惡意扣費、偷窺隱私等等行為。 二次打包問題只是Android應用安全風險中...

    PAMPANG 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<