當前位置:首頁 » 編程軟體 » apk無法回編譯

apk無法回編譯

發布時間: 2023-08-14 05:51:11

㈠ apk反編譯/回編譯

再次記錄一次apk反編譯/回編譯過程,鏈接失效請留言,會及時更新。

參考博客: https://blog.csdn.net/w327918069/article/details/82761437

首先,我們需要一個apk,下圖是Android Studio編寫並打包的一個apk。

其實apk就相當於一個zip壓縮包,通過 WinRar 工具可以對其解壓縮,像這樣:

此時,祭出我們的神器----> apktool ,當當當當~~~~~~~。
一行命令進行apk反編譯:
apktool d -r app-debug.apk 一定要加入參數 -r ,不然後面回編譯回報錯。

apk反編譯到此結束。

回編譯就是通過 apk反編譯 生成的目錄文件轉換成一個apk。
十分簡單的一行命令:
apktool b app-debug

此時安裝apk到手機無法安裝成功,還需要對apk進行簽名才能安裝。

1.生成key.keystore
keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

可以看到key.keystore已經生成。

2.對apk進行簽名
可用於沒有簽名和已經簽名的apk,再次簽名。

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

命令格式及參數意義:

-verbose -> 輸出簽名過程的詳細信息

-keystore [keystorePath] -> 密鑰的庫的位置

-signedjar [apkOut] -> 簽名後的輸出文件名

[apkin] -> 待簽名的文件名

[alias] -> 證書別名
jarsigner -verbose -keystore key.keystore -signedjar app-debug_signed.apk app-debug.apk key.keystore

回編譯完成。

㈡ 求助,apk被加密了,反編譯不了,可有方法解決

下載dex2jar JD-GUI apktool

反編譯步驟:
1.反編譯Apk得到java源代碼
首先要下載兩個工具:dex2jar和JD-GUI
前者是將apk中的classes.dex轉化成Jar文件,而JD-GUI是一個反編譯工具,可以直接查看Jar包的源代碼。

具體步驟:
1.首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
2.解壓下載的dex2jar,將classes.dex復制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄
運行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar

2.反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件
還是下載工具,這次用到的是apktool

具體步驟:
將下載的兩個包解壓到同一個文件夾下,應該會有三個文件:aapt.exe,apktool.bat,apktool.jar
1.解壓縮下載的兩個文件包,apktool-install-windows-r04-brut1.tar解壓縮後得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解壓後的一個.jar 文件到解壓後的\apktool-install-windows-r04-brut1文件夾里)
2.特別注意:你要反編譯的文件一定要放在C盤的根目錄里

㈢ apk反編譯,回編出錯了

不影響正常運行,只是編譯環境,
compileSdkVersion 告訴 Gradle 用哪個 Android SDK 版本編譯你的應用。使用任何新添加的 API 就需要使用對應 Level 的 Android SDK。
需要強調的是修改 compileSdkVersion 不會改變運行時的行為。當你修改了 compileSdkVersion 的時候,可能會出現新的編譯警告、編譯錯誤,但新的 compileSdkVersion 不會被包含到 APK 中:它純粹只是在編譯的時候使用。(你真的應該修復這些警告,他們的出現一定是有原因的)
因此我們強烈推薦總是使用最新的 SDK 進行編譯。在現有代碼上使用新的編譯檢查可以獲得很多好處,避免新棄用的 API ,並且為使用新的 API 做好准備。
注意,如果使用 Support Library ,那麼使用最新發布的 Support Library 就需要使用最新的 SDK 編譯。例如,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本號要一致!)。通常,新版的 Support Library 隨著新的系統版本而發布,它為系統新增加的 API 和新特性提供兼容性支持。
解決辦法有兩種(我測試的前提是反編譯的母包是沒有包含這兩個屬性的):
(1)使用apktool 2.3.2版本,因為2.3.3之後版本針對appt和appt2做了修改,最後AndroidManifest.xml裡面不在包含compileSdkVersion和compileSdkVersionCodename
(2)清除原本的1.apk,重新指定framework-dir:java -jar apktool_2.4.0.jar empty-framework-dir --force,最後發現可以回編譯成功,但是AndroidManifest.xml還是會包含compileSdkVersion和compileSdkVersionCodename。

㈣ Android APK+Dex文件反編譯及回編譯工具的常見問題

1、被殺毒軟體攔截誤殺(安裝前,關閉殺毒軟體)
2、沒有管理員許可權(右鍵以管理員身份運行C:Apkdb安裝.exe)或者,使用兼容模式 (右鍵-屬性-兼容性-兼容模式[Windows XP SP3])以及 特權等級 勾選「以管理員身份運行此程序」
3、UAC限制 安裝過程沒有寫入注冊表提示,直接顯示安裝完成(右鍵 我的電腦-管理-本地用戶和組-用戶-Administrator(√ 密碼永不過期)請在系統變數【path】里最前面添加 c:windows;c:windowssystem32;4、正常安裝成功,安裝過程有寫入注冊表提示,但是右鍵APK 沒有菜單(檢查是不是安裝了PC版的手機管理工具,關聯了APK文件)
5、安裝後無法編譯文件,提示JAVA 錯誤(未安裝JAVA平台,或安裝錯誤。請卸載後重啟電腦,重裝再次重啟電腦)
6、安裝成功後,編譯文件提示 「Can't create the output directory \****smali」(這是文件夾 沒有寫入許可權。檢查是否直接在硬碟分區根目錄編譯了?Apktool不能在磁碟分區。如:C盤 D盤 根目錄!如果不是根目錄,請檢查apk文件名稱是不是有問題。如,文件名結尾空格。)
7、能反編譯,但無法回編譯(可能是被舊版本的Apktool編譯過,試試用舊版的反編譯,用新版的回編譯)
8、回編譯出錯問題:(1.提示 strings.xml 最後一行錯誤,檢查是否</string>符號錯誤;(2.提示 strings.xml 最頂部含中文代碼首行錯誤,編碼格式不對,轉換成 UTF-8;(3.提示 public.xml 出錯,檢查改動過的 arrays.xml 是否代碼有錯誤的地方;(4.其他錯誤,檢查是否復制aapt.exe 文件到系統目錄如:C:WindowsSystem32aapt.exe
9、安裝過程提示 systeminfo 提示「不是內部或外部命令」請在系統變數【path】里最前面添加 c:windows;c:windowssystem32;或者手動添加這個變數,如果還是不行可能系統不完整,重裝吧)
10、如果安裝過程中,未顯示【操作成功完成】只顯示:....................請在系統變數【path】里最前面添加 c:windows;c:windowssystem32;
11、64位系統,如果JAVA出錯,建議把32位和64位的JAVA一起裝上。
12、Win8用戶 需要注意一下,如果安裝了手機助手,需要,手動關聯APK文件apk文件滑鼠右鍵,【打開方式】-【選擇默認程序】-【APK安裝器】

㈤ 反編譯apk之後無法回編譯,怎麼回事

使用apktool進行apk的反匯編時,沒有出現問題(有問題的自行解決),

但是進行回匯編時出現:

F:\apktool>apktool b Hello Hello.apk
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml
at brut.androlib.Androlib.readMetaFile(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.apktool.Main.cmdBuild(Unknown Source)
at brut.apktool.Main.main(Unknown Source)
Caused by: brut.directory.PathNotExist: apktool.yml
at brut.directory.AbstractDirectory.getFileInput(Unknown Source)
... 5 more
經驗證是,反匯編時沒有生成apktool.yml
進行反匯編時,改用命令apktool d -r xx.apk xx便可以解決(加上了-r選項)

㈥ ApkTool可以成功反編譯APK,但是回編譯總是失敗

應該修改語句不對,失敗的時候會提示錯誤位置

㈦ APK 反編譯失敗 是為啥

1 有沒有載入framework-res.apk構架?在編譯一些系統程序時需要先載入framework-res.apk這個系統構架。

2 反編的文件及framework-res.apk是不是官方原版未改動過的?很多時候出錯是因為反編的文件是別人或自己改動過的,建議直接從官方固件中提取文件進行編譯。

3 技巧說明使用的工具是否版本過低?目前APK編譯工具apktool已更新了

4 技巧說明以上都沒有問題?反編後什麼也不改回編也出錯?那隻有一個方法了:可以嘗試一下用低版本的apktool進行反編譯,然後在用高版本的apktoo工具回編譯。

還有比如JAVA環境是否搭建正確這些基本問題這里就不說了。

㈧ apk回編譯出錯

首先,確保aapt命令直接列印成功輸出!需要配置環境變數:
在Path一欄中添加:
%ANDROID_SDK_HOME%uild-toolsandroid-4.4;
後面的android-4.4你懂的,換句話說只要存在aapt.exe的文件夾就可以了.

然後你的apktool.jar命令貌似沒有看懂

apktool.jardyou.apk
指的是將you.apk反編譯成源文件

apktool.jardyou
指的是把源文件回編譯成apk文件,ps:或許其他。

㈨ apktool 回編譯失敗 怎麼解決

、反編譯=回編譯後分別是
smali目錄
回編譯為
classes.dex
文件
res目錄
回編譯為
resources.arsc
文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali

所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。1、反編譯=回編譯後分別是
smali目錄
回編譯為
classes.dex
文件
res目錄
回編譯為
resources.arsc
文件
2、回編譯順序
在回編譯時,會先檢查「源」即resources
當你漢化文件,修改出錯了(缺少一個符號也不行),
那麼回編譯會自動跳過編譯res文件夾,直接回編譯smali

所以,如果沒有對smali(classes.dex)漢化,那麼建議大家刪掉這個文件夾,
這要會大大加快回編譯速度。
3、出錯問題1
在漢化時,往往會不小心刪掉一些符號,如
"<"
">"符號等等。
<string
name="app_name">File
Manager</string>
<string
name="app_name">文件管理器/string>
<string
name="app_name"文件管理器</string>
這些小小的錯誤都會導致回編時譯檢查出錯。
所以漢化時,注意對校,然後再回編譯。
建議使用一些高級的文本編輯器,支持語法高亮視圖的。
4、出錯問題2
最近發現有些APK文件
反編譯後,就算不漢化直接回編譯,都會出錯。
有可能的原因1,反編譯後XML文件語法中@符號
前面多了"\"
(\@
),
用文本編輯工具
直接替換【\@】為【@】,應該可以解決。
建議使用最新版本的反編譯工具。
5、建議大家使用新版本的APKTool工具,
當然如果新的有問題也可以試試舊的一、系統文件漢化再次強調
1、漢化Settings.apk(系統設置)、MMS.apk(信息)、Phone.apk(電話)、
等等系統文件,一定要先
安裝構架,具體看另個文件
<關於APKTool工具反編譯Settings.apk問題>。
2、系統文件漢化完後不需要簽名,直接替換漢化後的文件,就可以了。
主要是,系統文件放在系統目錄,無需再次讀取簽名獲得許可權,已經是高級了。
二、打包說明
1、通常漢化完回編譯後,會自動生成所有APK內的文件,或者自動生成*.APK文件。
但是建議大家不要直接使用該文件,進了使用替換法,替換掉你漢化後的文件,
如:resources.arsc,如果修改過的圖片,等等…
2、很多人對於APK文件
解壓縮或壓縮
都用「WinRAR」或「好壓」,這里不推薦。

希望大家安裝7-Zip這個壓縮工具,對於zip格式的支持是最好的。而且很方便,
不需要重新關聯apk
直接右鍵打開就行了。替換直接拖拉進去,就OK了一、回編譯出錯問題
(1.提示
strings.xml
最後一行錯誤,檢查是否</string>符號錯誤;
在漢化時,往往會不小心刪掉一些符號,如
"<"
">"符號等等。
<string
name="app_name">File
Manager</string>
<string
name="app_name">文件管理器/string>
<string
name="app_name"文件管理器</string>
(2.提示
strings.xml
最頂部含中文代碼首行錯誤,編碼格式不對,轉換成
UTF-8;
(3.提示
public.xml
出錯,檢查改動過的
arrays.xml
是否代碼有錯誤的地方;
二、一切能正常但無法回編譯
還有一種情況,apktool最新版本能正常反編譯一個apk文件,在未做任何修改的情況下,無法回編譯。
這是就要注意了,可以嘗試一下用低版本的apktool進行【反編譯】,然後在用高版本的apktoo工具【回編譯】。
這里向大家推薦用
【APKDB】
這個工具,很方便,反編譯時可以選擇apktool的版本。

熱點內容
phpposthtml 發布:2025-02-04 21:37:46 瀏覽:87
最新asp源碼 發布:2025-02-04 21:17:33 瀏覽:570
讓linux死機 發布:2025-02-04 20:48:08 瀏覽:141
單方塊生存伺服器里如何獲取岩漿 發布:2025-02-04 20:48:07 瀏覽:785
快速指數演算法 發布:2025-02-04 20:20:40 瀏覽:299
python在類中定義函數調用函數 發布:2025-02-04 20:14:47 瀏覽:596
安卓手機的壁紙是哪個 發布:2025-02-04 20:14:44 瀏覽:202
java發展前景 發布:2025-02-04 20:10:19 瀏覽:77
mac登陸密碼哪裡設置 發布:2025-02-04 19:50:20 瀏覽:526
手游腳本封號 發布:2025-02-04 19:42:12 瀏覽:437