安卓apk編譯
『壹』 反編譯Android APK的具體步驟是怎樣的
1、配置好java環境變數,下載:apktool 解壓的文件放在C盤根目錄的apktool文件夾里(apktool文件夾自己創立)
2打開命令提示符,(開始-運行-輸入cmd)
3輸入:cd \apktool 系統指令到了apktool文件夾(這里就是為什麼要把解壓的apktool解壓的文件放到apktool文件夾的原因,當然你也可以自命名文件夾的名稱,那麼比如arc,那麼指令就變成了:cd \arc 前提是你必須把apktool解壓的文件放到這個文件夾裡面)
4使用RE管理器把系統裡面的framework-res.apk 與 SystemUI.apk 提取出來放在apktool文件夾裡面
5 如果只是想反編譯framework-res.apk
輸入apktool if framework-res.apk(框架的建立)
6開始最重要的反編譯,輸入指令,apktool d framework-res.apk
(反編輯的APK一定要用沒換過圖片的,否則回編輯失敗)
7最後反編譯完成
修改代碼完成後,輸入代碼:apktool d framework-res 即可完成回編譯
8回編譯後的新的 apk在framework/dis 文件夾裡面
9如果反編譯的是系統文件,比如,SystemUI.apk 那麼必須進行掛載框架,反編譯時,必須敲入一下命令:(然後再重復7-9步驟)
apktool if framework-res.apk
apktool if SystemUI.apk
10對於三星手機(比如9100、9108/9100G),如果反編譯SystemUI.apk要敲入一下命令進行框架掛載apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
11回編譯的命令是 apktool b XXX (沒有後面的apk後綴)反編譯的命令是 apktool d xxx (有後面的apk)
『貳』 Android 將 apk 反編譯為源碼
將 apk 解壓,在解壓後的文件夾中可以找到 classes.dex 文件。(除了 classes.dex 文件,可能還會有 classes2.dex , classes3.dex 等等,本文以 classes.dex 為例,對其他幾個 dex 文件的操作是類似的)
使用 dex2jar 工具,將 dex 文件轉換為 jar 文件
使用方式:
執行命令後,生成的 classes-dex2jar.jar 就是我們需要的 jar 文件。
使用 Luyten 工具查看 jar 文件,就能看到反編譯後的源碼了。
本例中, classes.dex 文件中存儲的是 android 的一些基礎庫,實際編寫的源碼在 classes3.dex 中,對 classes3.dex 執行第二步,查看生成的 classes3-dex2jar.jar 文件,可以看到如下內容:
這就是反編譯 apk 的基本操作了。
Cmder 是一個非常好用的命令行工具。
效果如下:
只需要執行 apk2jar 命令,就可以實現把 apk 解壓到 apk_ 文件夾中,並將 apk_ 文件夾中的 classes.dex 文件轉換為 jar 。原理就是通過 Cmder 添加別名,把上述的第一步和第二步中執行的命令行組合起來了。
為 Cmder 添加別名很簡單,編輯 Cmder安裝目錄\config\user_aliases.cmd 文件,將別名添加到裡面即可。本例添加的別名如下:
其中:
『叄』 Android APK編譯流程
apk 是Android Package的簡寫, 在平時的開發過程中,通過點擊 Run app 按鈕 或者 在命令行中輸入
這樣Android Studio就會啟動構建流程,最終輸出一個我們想要的APK。
直達官網介紹
對於小白來說,上面一張圖已經可以解釋apk的構建過程了,不過對於Andoid開發者而言還需要了解一些更詳細的構建過程。
詳細的對應步驟 和 使用工具如下:
資源文件(res文件夾下的文件)通過 AAPT(Android Asset Packaging Tool)打包生成R.java類(資源索引表)、.arsc資源文件 和res文件。
resources.arsc 是一個App的資源索引表,通過R.java 文件 和 resources.arsc 可以定位到資源的內存地址,resources.arsc文件的作用是通過一樣的ID,根據不同的配置索引到最佳的資源顯示在UI中。
AIDL (Android Interface Definition Language), 是Android介面定義語言,是Android提供的IPC (Inter Process Communication,進程間通信)的一種獨特實現。
如果有aidl文件,這個階段會生成對應的Java介面文件。
R.java文件、工程源碼文件、aidl.java文件, 在這一步通過javac生成.class文件。
源碼.class文件和第三方jar或者library通過dx工具打包成dex文件
Android系統的Dalvik虛擬機的可執行文件為DEX格式,所以這里會將上一步中生成的.class文件 和 引用的第三方jar等過程中的.class 一起通過dx工具打包成dex文件
apkbuilder工具會將所有沒有編譯的資源、.arsc資源、.dex文件打包到一個完成apk文件中
tips:
apksigner工具會對未簽名的apk驗證簽名。得到一個簽名後的apk(signed.apk)
apksigner 是google 退出的V2簽名方式
Jarsigner 是之前一直使用的V1簽名方式
可以通過在命令行中輸入apksigner --help來獲取詳情信息,如果沒有特殊需求,使用下面命令即可完成簽名
release mode 下使用 aipalign進行align,即對簽名後的apk進行對齊處理
所謂對齊,主要過程是將APK包中所有的資源文件距離文件起始偏移為4位元組整數倍,這樣通過內存映射訪問apk文件時的速度會更快。對齊的作用主要是為了減少運行時內存的使用。
zipalign是一個android平台上整理APK文件的工具,它對apk中未壓縮的數據進行4位元組對齊,對齊後就可以使用mmap函數讀取文件,可以像讀取內存一樣對普通文件進行操作。如果沒有4位元組對齊,就必須顯式的讀取,這樣比較緩慢並且會耗費額外的內存。
參考文章:
Android-Studio配置構建
淺談Android打包流程
apk打包流程
END!
『肆』 androidapk反編譯軟體哪個好用(反編譯apk有什麼用)
dede反編譯delphi
depb,pbkill反和橡編譯pb
vbrezq反編譯vb
Reflector反編譯.net
foxtoolsd反編譯vf
等等
不要對反編譯期望太大,幾乎沒什麼用,Reflector反編譯不錯,因為是偽代碼,只要沒用混淆器混淆的,代碼橋凱幾乎能敏棚喚拿過來使用,其它的效果不是很理想
在使用過程中,沒遇到什麼需要注意的問題,軟體使用很簡單,就是用了沒多大用,望採納!謝謝!
『伍』 apk軟體是用什麼語言編寫和編譯的如何開發滴
apk
APK是AndroidPackage的縮寫,即Android安裝包(anapk)。APK是類似Symbian
Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。
apk文件和sis一樣最終把android
sdk編譯的工程打包成一個安裝程序文件格式為apk。
APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓後,可以看到Dex文件,Dex是Dalvik
VM
executes的全稱,即Android
Dalvik執行程序,並非Java
ME的位元組碼而是Dalvik位元組碼。一個APK文件結構為:
META-INF
Jar文件中常可以看到
res
存放資源文件的目錄
AndroidManifest.xml
程序全局配置文件
classes.dex
Dalvik位元組碼
resources.arsc
編譯後的二進制資源文件總結下我們發現Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接,和Windows
Mobile中的PE文件有區別,這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯,但這樣做符合發展規律,微軟的
Windows
Gadgets或者說WPF也採用了這種構架方式。在Android平台中dalvik
vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後的androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。最終我們平時安裝的文件可能不是這個文件夾,而在android
rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。
『陸』 安卓apk文件如何反編譯
安卓apk文件反編譯:
一、反編譯xml文件
1>
首先下載我給你們提供的文件夾apk_fanbianyi,把它放到某個盤的根目錄下(為了方便輸入dos命令),然後打開apktool文件夾,安裝win+r鍵,然後輸入cmd,進入dos命令行,大家別怕,不用暈,很簡單的。
2>
然後在dos命令中首先輸入文件夾所在盤符+「:」回車,接著再輸入cd+apktool所在目錄,切換dos工作空間到apktool文件夾下。
3>
接著輸入
apktool.bat
d
【需反編譯apk文件路徑】
{【反編譯文件反編譯後的路徑】},其中最後一部分可以省去,系統會默認把apk文件反編譯到apktool目錄下,例如輸入
apktool.bat
d
d:/apk_fanbianyi/ttkp.apk,在apktool文件夾下就會生成一個ttpk的文件夾,所有的xml文件全部反編譯成功。
二、反編譯java文件
1>
首先解壓需要反編譯的apk文件,拷貝出裡面的classes.dex文件到dex2jar文件夾(為了方便操作,省去dos命令輸入路徑的麻煩)
2>
把工作空間切換到dex2jar文件夾下,輸入命令cd
d:/apk_fanbianyi/dex2jar回車
3>
輸入命令dex2jar.bat
classes.dex回車,發現dex2jar文件夾下多了一個classes_dex2jar.jar文件,這是反編譯成功的java文件
三、xml文件的打開
1>
打開apktool文件夾下的ttkp文件夾,任意找到一個xml文件,選中單擊右鍵,選擇notepad++打開(需下載),如果沒有此軟體,可以選擇打開方式,選擇記事本打開
四、java文件的打開
1>
dex2jar文件夾下的classes_dex2jar.jar拷貝到apktool文件夾的ttkp文件夾中,不能用notepad++打開,不然會亂碼的
2>
啟動apk_fanbianyi文件夾下的jd-gui.exe,然後點左上角file,選擇open
file,找到classes_dex2jar.jar文件,可以發現有很多包,選擇包下的任意一個java文件,打開不亂碼了,是不是很神奇,哈哈,你學會了安卓apk文件反編譯