當前位置:首頁 » 編程軟體 » 安裝包反編譯查看id

安裝包反編譯查看id

發布時間: 2025-06-19 23:07:42

① apktool 反編譯系統框架 缺少ID:2 回編譯會說缺少apktool.yml 我已經

首先你要在手機內存里找到名為apktool的文件夾,然後長按設為主目錄,然後在反編譯時一定要注意,反編譯的安裝包不能包含中文,安裝包的路徑也不能是包含中文的文件夾

② 濡備綍鍙嶇紪璇慳ndroid搴旂敤騫墮噸鏂版墦鍖

涓.鐪媋ndroid鐨勬簮浠g爜

銆銆1)灝咥pkd.apk 鐢▃ip瑙e帇鍚庯紝鍑虹幇浜嗕竴涓猚lasses.dex鏂囦歡
銆銆2014/02/19 19:42
銆銆.
銆銆2014/02/19 19:42
銆銆..
銆銆2014/02/19 15:35 1,656 AndroidManifest.xml
銆銆2014/02/19 15:35 687,024 classes.dex
銆銆2014/02/19 15:49
銆銆META-INF
銆銆2014/02/19 15:49
銆銆res
銆銆2014/02/19 15:35 2,200 resources.arsc
銆銆2)榪涘叆鍒癲ex2jar鐩褰曚腑錛岃繍琛屾儏鍐靛備笅錛
銆銆D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d
銆銆ex"
銆銆this cmd is deprecated, use the d2j-dex2jar if possible
銆銆dex2jar version: translator-0.0.9.15
銆銆dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar
銆銆Done.
銆銆鍦╝pk鎵鍦ㄧ殑鐩褰曚細鍑虹幇 classes_dex2jar.jar 鏂囦歡銆
銆銆3) 鐢↗D-GUI瀵筳ar鍖呰繘琛屾煡鐪嬶紝鍙浠ユ煡鐪嬫簮鏂囦歡

銆銆浜.鍙嶇紪璇慳pk

銆銆1.鍦ㄣ涓嬭澆銆APKTOOL涓鐨勪笁涓鏂囦歡錛坅apt.exe銆乤pktool.bat銆乤pktool.jar錛夎В鍘嬬緝鍒頒綘鐨刉indows瀹夎呯洰褰曚笅錛屼互鏂逛究浣跨敤Dos鍛戒護.
銆銆2012/12/06 11:44 854,016 aapt.exe
銆銆2014/02/19 17:15 277,372 Apkd.apk銆//紺轟緥鐢ㄣapk鏂囦歡
銆銆2012/12/23 23:39 92 apktool.bat
銆銆2013/02/03 02:37 2,655,843 apktool.jar
銆銆2.榪涘叆鍒癮pktool.bat鎵鍦ㄧ殑鐩褰曪紝榪愯岋細
銆銆apktool d Apkd.apk decode_dir
銆銆鍙嶇紪璇戝悗,decode_dir鐩褰曚笅鐨勫唴瀹瑰備笅錛
銆銆2014/02/19 17:16 716 AndroidManifest.xml
銆銆2014/02/19 17:16 237 apktool.yml
銆銆2014/02/19 17:18
銆銆build
銆銆2014/02/19 17:16
銆銆res
銆銆2014/02/19 17:16
銆銆smali
銆銆姝ゆ椂鎴戝彲浠ユ煡鐪嬪師鏂囦歡AndroidManifest.xml浜嗭紝涔熸槸鏌ョ湅smali婧愭枃浠訛紙鏄鐢╯mali璇璦鍐欑殑錛屽彲浠ュ圭収java鐪嬶級銆

銆銆涓.APKTOOL鐨勪嬌鐢

銆銆1).decode
銆銆璇ュ懡浠ょ敤浜庤繘琛屽弽緙栬瘧apk鏂囦歡錛屼竴鑸鐢ㄦ硶涓
銆銆apktool d

銆銆浠h〃浜嗚佸弽緙栬瘧鐨刟pk鏂囦歡鐨勮礬寰勶紝鏈濂藉啓緇濆硅礬寰勶紝姣斿侰:\MusicPlayer.apk
銆銆浠h〃浜嗗弽緙栬瘧鍚庣殑鏂囦歡鐨勫瓨鍌ㄤ綅緗錛屾瘮濡侰:\MusicPlayer
銆銆濡傛灉浣犵粰瀹氱殑宸茬粡瀛樺湪錛岄偅涔堣緭鍏ュ畬璇ュ懡浠ゅ悗浼氭彁紺轟綘錛屽苟涓旀棤娉曟墽琛岋紝闇瑕佷綘閲嶆柊淇鏀瑰懡浠ゅ姞鍏-f鎸囦護
銆銆apktool d 鈥揻

銆銆榪欐牱灝變細寮鴻岃嗙洊宸茬粡瀛樺湪鐨勬枃浠
銆銆2).build
銆銆璇ュ懡浠ょ敤浜庣紪璇戜慨鏀瑰ソ鐨勬枃浠訛紝涓鑸鐢ㄦ硶涓
銆銆apktool b

銆銆榪欓噷鐨
銆銆灝辨槸鍒氭墠浣犲弽緙栬瘧鏃惰緭鍏ョ殑
銆銆錛堝侰:\MusicPlayer錛,杈撳叆榪欒屽懡浠ゅ悗錛屽傛灉涓鍒囨e父錛屼綘浼氬彂鐜癈:\MusicPlayer鍐呭氫簡2涓鏂囦歡澶筨uild鍜宒ist錛屽叾涓鍒嗗埆瀛樺偍鐫緙栬瘧榪囩▼涓閫愪釜緙栬瘧鐨勬枃浠朵互鍙婃渶緇堟墦鍖呯殑apk鏂囦歡銆
銆銆3).install-framework
銆銆璇ュ懡浠ょ敤浜庝負APKTool瀹夎呯壒瀹氱殑framework-res.apk鏂囦歡錛屼互鏂逛究榪涜屽弽緙栬瘧涓浜涗笌ROM鐩鎬簰渚濊禆鐨凙PK鏂囦歡銆傚叿浣撴儏鍐佃風湅甯歌侀棶棰

銆銆鍥.smali涓巎ava婧愮爜瀵圭収錛屽苟鍋氬嚭鐩稿簲鐨勪慨鏀

銆銆java婧愪唬鐮侊細

銆銆import android.os.Bundle;
銆銆import android.app.Activity;
銆銆import android.view.Menu;
銆銆import android.widget.*;

銆銆public class MainActivity extends Activity {

銆銆@Override
銆銆protected void onCreate(Bundle savedInstanceState) {
銆銆super.onCreate(savedInstanceState);
銆銆setContentView(R.layout.activity_main);
銆銆TextView a = (TextView)this.findViewById(R.id.test) ;
銆銆a.setText("raoliang");
銆銆}

銆銆@Override
銆銆public boolean onCreateOptionsMenu(Menu menu) {
銆銆// Inflate the menu; this adds items to the action bar if it is present.
銆銆getMenuInflater().inflate(R.menu.main, menu);
銆銆return true;
銆銆}

銆銆}

銆銆瀵瑰簲鐨剆mali婧愪唬鐮侊細
銆銆.class public Lali/text/apkd/MainActivity;
銆銆.super Landroid/app/Activity;
銆銆.source "MainActivity.java"

銆銆# direct methods
銆銆.method public constructor ()V
銆銆.locals 0

銆銆.prologue
銆銆.line 8
銆銆invoke-direct {p0}, Landroid/app/Activity;->()V

銆銆return-void
銆銆.end method

銆銆# virtual methods
銆銆.method protected onCreate(Landroid/os/Bundle;)V
銆銆.locals 2
銆銆.parameter "savedInstanceState"

銆銆.prologue
銆銆.line 12
銆銆invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

銆銆.line 13
銆銆const/high16 v1, 0x7f03

銆銆invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V

銆銆.line 14
銆銆const/high16 v1, 0x7f08

銆銆invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;

銆銆move-result-object v0

銆銆check-cast v0, Landroid/widget/TextView;

銆銆.line 15
銆銆.local v0, a:Landroid/widget/TextView;
銆銆const-string v1, "raoliang"

銆銆invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

銆銆.line 16
銆銆return-void
銆銆.end method

銆銆.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
銆銆.locals 2
銆銆.parameter "menu"

銆銆.prologue
銆銆.line 21
銆銆invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;

銆銆move-result-object v0

銆銆const/high16 v1, 0x7f07

銆銆invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V

銆銆.line 22
銆銆const/4 v0, 0x1

銆銆return v0
銆銆.end method

銆銆閫氳繃瀵規瘮鍙浠ョ湅鍒幫紝甯擱噺鏄娌℃湁蹇呭彉鐨勶紝鍙浠ユ牴鎹鐨剆mali鐨勮娉曪紝榪涜岀浉搴旂殑淇鏀

銆銆浜.3銆佹墦鍖呫佺懼悕鍜屽畨瑁呬慨鏀瑰悗鐨刟pk

銆銆淇鏀瑰畬浜嗭紝灝卞彲浠ユ墦鍖呭洖apk浜嗐傛墽琛屼互涓嬪懡浠わ細
銆銆apktool b decode_dir
銆銆鍦╩ygame鐩褰曚笅鐨刣ist鍦ㄤ細鐪嬪埌鎵撳寘濂界殑apk銆
銆銆褰撶劧錛岀幇鍦ㄤ竴鑸鏄鏃犳硶瀹夎呯殑錛屽洜涓篴pk榪樻病鏈夌懼悕銆備笅闈㈠氨鏉ョ懼悕銆傜懼悕闇瑕乲eystore鏂囦歡錛屾垜宸茬粡鏈変笓鐢ㄧ殑keystore浜嗭紝濡傛灉榪樻病鏈夛紝璇峰弬闃呰繖閲岃繘琛岀敓鎴愩
銆銆鎵ц屼互涓嬪懡浠や負閲嶆柊緙栬瘧鐨刴y_game.apk絳懼悕錛
銆銆jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
銆銆鏈鍚庯紝鍦ㄥ畨瑁呭埌鎵嬫満鍓嶏紝闇瑕佹妸鎵嬫満涓鐨勫凡鏈夌増鏈鍏堝嵏杞斤紝鍥犱負濡傛灉絳懼悕涓嶅悓錛屾槸涓嶈兘瑕嗙洊瀹夎呯殑錛屼細鎻愮ず鈥滃簲鐢ㄧ▼搴忔湭瀹夎呪濋敊璇銆
銆銆瀹屾暣鐨勮繍琛屾儏鍐靛備笅錛

銆銆D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
銆銆杈撳叆keystore瀵嗙爜錛
銆銆鍐嶆¤緭鍏ユ柊瀵嗙爜:
銆銆鎮ㄧ殑鍚嶅瓧涓庡撴皬鏄浠涔堬紵
銆銆[Unknown]錛 rao
銆銆鎮ㄧ殑緇勭粐鍗曚綅鍚嶇О鏄浠涔堬紵
銆銆[Unknown]錛 rao
銆銆鎮ㄧ殑緇勭粐鍚嶇О鏄浠涔堬紵
銆銆[Unknown]錛
銆銆鎮ㄦ墍鍦ㄧ殑鍩庡競鎴栧尯鍩熷悕縐版槸浠涔堬紵
銆銆[Unknown]錛
銆銆鎮ㄦ墍鍦ㄧ殑宸炴垨鐪佷喚鍚嶇О鏄浠涔堬紵
銆銆[Unknown]錛
銆銆璇ュ崟浣嶇殑涓ゅ瓧姣嶅浗瀹朵唬鐮佹槸浠涔
銆銆[Unknown]錛
銆銆CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 姝g『鍚楋紵
銆銆[鍚]錛 y

銆銆杈撳叆鐨勪富瀵嗙爜
銆銆錛堝傛灉鍜 keystore 瀵嗙爜鐩稿悓錛屾寜鍥炶濺錛夛細

銆銆D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
銆銆杈撳叆瀵嗛掗搴撶殑鍙d護鐭璇錛
銆銆姝e湪娣誨姞錛 META-INF/MANIFEST.MF
銆銆姝e湪娣誨姞錛 META-INF/DEMO_KEY.SF
銆銆姝e湪娣誨姞錛 META-INF/DEMO_KEY.RSA
銆銆姝e湪絳懼悕錛 res/drawable-hdpi/ic_launcher.png
銆銆姝e湪絳懼悕錛 res/drawable-mdpi/ic_launcher.png
銆銆姝e湪絳懼悕錛 res/drawable-xhdpi/ic_launcher.png
銆銆姝e湪絳懼悕錛 res/drawable-xxhdpi/ic_launcher.png
銆銆姝e湪絳懼悕錛 res/layout/activity_main.xml
銆銆姝e湪絳懼悕錛 res/menu/main.xml
銆銆姝e湪絳懼悕錛 AndroidManifest.xml
銆銆姝e湪絳懼悕錛 classes.dex
銆銆姝e湪絳懼悕錛 resources.arsc

銆銆D:\developer\tools\test_apk\new\decode\dist>
銆銆鍒版や負姝錛屼慨鏀瑰悗鐨刟pk鍙浠ユe父鐨勫畨瑁呬簡錛屼笉榪囷紝鍦ㄥ畨瑁呬箣鍓嶏紝蹇呴』瑕佸厛鍗歌澆浠ュ墠鐨刟pk錛屼笉鑳界洿鎺ユ浛鎹錛堝洜涓虹懼悕涓嶄竴鏍鳳級

③ 如何反編譯android應用以及重編譯,簽名和對齊優化

首先,了解一下我們為什麼需要反編譯apk
大部分情況下,是由於想本地化一款優秀的應用,才需要做這事兒;又或者進行少量的smali修改以達到想要的效果(如添加歸屬地,使3G版Nexus 7支持Wi-Fi熱點)。

下面我們先准備運行環境和工具
建立工作目錄,如.\workspace\apktoolbox (下面同樣以此路徑為例)
必不可少的JDK:Oracle Java下載,安裝完成後把<jdk-inst-path>\bin添加到$PATH環境變數中
反編譯和重編譯工具apktool:Google Code下載,按平台下載(一個apktool-install-<platform>-<ver>-tar.bz2,一個apktool<ver>.tar.bz2,下載完成後解壓至.\workspace\apktoolbox\bin
密鑰文件,共4組。test/shared/media/platform,從android source中獲取,分別對應不同共享用戶ID時簽名所需(查看應用AndroidManifest.xml第二行android:sharedUserId項 ),放到.\workspace\apktoolbox\bin下
test - 無android:sharedUserId項
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
簽名工具signapk.jar,放到.\workspace\apktoolbox\bin下
對齊優化工具zipalign(從android sdk中獲取,在tools目錄下),放到.\workspace\apktoolbox\bin下
准備工作完成

接下來我們就要開始工作了(以本地化工作為例)
把待反編譯的apk放到.\workspace\apktoolbox\apks下
在命令行模式下進入.\workspace\apktoolbox\bin目錄,輸入以下命令進行解包(反編譯)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目錄(英文原版)和values-r<locale>目錄(本地化)就是我們需要的對象。
本地化工作完成後,在命令行中輸入以下命令進行重新打包(重新編譯)
apktool b ..\apks\<outdir>

.\workspace\apktoolbox\apks\<outdir>\dist目錄下會生成重新打包後的apk(未簽名,未對齊優化)
重新打包完成後,在命令行中輸入以下命令進行簽名(根據實際情況選用密鑰,這里以test密鑰為例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk

簽名完成後,在命令行中輸入以下命令進行對齊優化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk

<apkfile>_zipaligned.apk就是我們最終需要的apk了。
完成
部分apk需要系統框架資源,沒有的話在重新打包時會報錯,這種情況下我們只需要先安裝一下對應系統框架即可(從你目標ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中輸入以下命令進行安裝
apktool if ..\apks\framework-res.apk

④ apk反編譯工具Apktool的安裝與使用教程

APKTool是GOOGLE提供的APK編譯工具,需要JAVA運行環境,推薦使用JDK1.6或者JDK1.7。 下面就一起來看看詳情了解一下該怎麼安裝使用吧軟體名稱:apktool(apk反編譯工具) v1.41 中文綠色免費版軟體大小:3.32MB更新時間:2014-01-04

如果你想對APK文件進行修改,那麼就不可避免的要使用到APKTool。論壇里有很多關於ROM美化的帖子都需要自己動手修改APK文件,比如修改framework-res.apk、systemUI.apk等等。

相信各位有不少人看了後都想親自來修改一番,但是結果卻是遇到了各式各樣的錯誤卻無法進行改正,甚至都不知道自己錯在哪裡。

一.APKTOOL使用環境配置

1.安裝JAVA並設置環境變數。

下載安裝都很簡單,關鍵是安裝完後還需要親自設置環境變數以方便其他程序能夠條用JAVA。

以WIN7為例,在桌面上右鍵點擊計算機——>屬性——>高級系統設置——>環境變數——>在下邊的系統變數里新建一個變數,變數名為JAVA_HOME,值為JAVA的安裝路徑,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26

二.APKTool的安裝

1.其實這個談不上安裝,不過如果你願意的話可以把下載到的APKTOOL中的三個文件(aapt.exe、apktool.bat、apktool.jar)解壓縮到你的Windows安裝目錄下,以方便使用Dos命令.

2.可能有些人下載的APKTOOL里有個安裝的bat文件,並且有另外兩個方便使用的bat文件,在這里我不推薦大家使用這些bat文件,雖然使用起來很方便(其實我並不覺得方便),但是如果出現錯誤不方便查看。

三.APKTool的使用

1.decode

該命令用於進行反編譯apk文件,一般用法為

apktool d

代表了要反編譯的apk文件的路徑,最好寫絕對路徑,比如C:\MusicPlayer.apk

代表了反編譯後的文件的存儲位置,比如C:\MusicPlayer

如果你給定的已經存在,那麼輸入完該命令後會提示你,並且無法執行,需要你重新修改命令加入-f指令

apktool d –f

這樣就會強行覆蓋已經存在的文件

2.build

該命令用於編譯修改好的文件,一般用法為

apktool b

這里的就是剛才你反編譯時輸入的(如C:\MusicPlayer),輸入這行命令後,如果一切正常,你會發現C:\MusicPlayer內多了2個文件夾build和dist,其中分別存儲著編譯過程中逐個編譯的文件以及最終打包的apk文件。

3.install-framework

該命令用於為APKTool安裝特定的framework-res.apk文件,以方便進行反編譯一些與ROM相互依賴的APK文件。具體情況請看常見問題

四.常見問題

1.關於安裝和管理framework文件

以下大部分其實是翻譯自http://code.google.com/p/android-apktool/wiki/FrameworkFiles

一般來說,你在使用apktool進行反編譯前不需要做其他的事情,然而由於有的廠商,如HTC,三星等,他們定製了framework文件並且在他們的系統應用中使用了這些文件,這時,為了能正常的反編譯這些apk文件,你就必須從你的設備中拷貝出framework文件並且安裝到apktool中。

舉一個例子,比如你想反編譯HTCHero這款手機中的HtcContacts.apk,當你嘗試反編譯的時候,你會得到以下錯誤信息。

1.$ apktool d HtcContacts.apk
2.I: Loading resource table...
3.I: Decoding resources...
4.I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
5.W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
6....
7.W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
8.Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.
復制代碼

這就是在通知你必須先安裝HTC定製的framework文件,事實上在修改一些三星的系統應用時也是如此。

以三星的設備來舉例,你需要復制兩個framework文件來進行安裝,framework-res.apk和tzframework-res.apk,一般來說,這兩個文件在手機中的位置應該是system\framework\

使用以下代碼進行安裝

apktool if C:\framework-res.apk

apktool if C:\tzframework-res.apk

這里假設2個文件都放在C盤根目錄

2.直接用build編譯後在dist中找到的apk文件無法使用

其實這個問題我也不是特別理解,目前知道的就是,APK文件雖然本質是個zip文件,但是事實上zip包中的文件是按照兩種方式壓縮的,即XML文件進行deflate壓縮,其他文件不進行壓縮(使用store存儲),而直接編譯得到的APK文件對任何的文件都進行了deflate壓縮,因此你會發現編譯得到的文件比原文件小好多。

同樣的,當你使用build文件夾中的文件替換原apk文件中的資源時,請務必確認是使用store存儲還是deflate壓縮

3.其他錯誤

其實在編譯過程中會遇到很多其他的問題,大多數是由於刪除、修改、添加了資源後,沒有對應的修改res\values\public.xml文件而造成的,這里我給大家說下修改的原則:

第一,public.xml文件中的資源不能重復定義。

第二,public.xml文件中的任意兩個資源的ID不能一樣

第三,public.xml文件中定義的資源必須能找到該文件(如果你刪除了一些文件,必須要對應的刪除public.xml中的該行)

第四,public.xml文件中盡可能全面(如果你添加了某資源,最好確保在public.xml中也添加)

第五,public.xml文件中的資源的ID盡可能連續(當你為添加的文件添加聲明時,賦予的ID盡可能是連續的)

熱點內容
復制登錄密碼是什麼意思 發布:2025-06-20 03:11:24 瀏覽:91
android動畫路徑 發布:2025-06-20 03:04:59 瀏覽:101
c語言字元數組比較 發布:2025-06-20 02:56:30 瀏覽:45
小愛連接密碼是什麼 發布:2025-06-20 02:54:55 瀏覽:179
安卓手機不是x5內核怎麼下載 發布:2025-06-20 02:44:06 瀏覽:395
免費的phpcms 發布:2025-06-20 02:43:25 瀏覽:430
less編譯css 發布:2025-06-20 02:38:49 瀏覽:985
壓縮保鮮機 發布:2025-06-20 02:30:07 瀏覽:948
安卓新手機如何檢驗激活 發布:2025-06-20 02:18:45 瀏覽:357
安卓手機怎麼登錄格來雲游戲 發布:2025-06-20 02:15:47 瀏覽:390