導航:首頁 > 源碼編譯 > 反編譯系統升級包

反編譯系統升級包

發布時間:2022-09-02 23:01:37

① 如何反編譯systemUI.apk

ystemui.apk等特殊軟體的編譯與反編譯步驟如下:
第一:要在你的PC上建立java的環境,才能執行編譯工作。具體設置方法可參考線刷包移植卡刷包教程。
第二:下載Apktool工具 ,下載後解壓得到apktool文件夾,把裡面的三個文件放在CDM模式(win+R)默認的目錄下。例如,我的是Windows7 32位 我的CDM模式默認目錄是C:\用戶(Users)\Administrator。
第三:如果你是要編譯系統文件的話,請將你要修改的rom里提取framework-res.apk,再用CMD模式「安裝」。(不這樣做會 導致解包錯誤)
安裝方法:把framework-res.apk放在剛才放在C:\用戶(Users)\Administrator文件夾下。cmd模式 執行apktool if framework-res.apk 這個是安裝framework-res.apk
第四:准備工作都做好了,現在就可以反編譯和編譯了。將你要反編譯的apk放在C:\用戶(Users)\Administrator目錄下。(你也可以用指定目錄)cmd模式 執行apktool d XXXX.apk 這個就是反編譯比如反編譯SystemUI就執行 apktool d SystemUI.apk 就可以了(會在當前的目錄下生成SystemUI的文件夾,修改就是在這個文件夾里進行)
注意:1.第三步很重要,很多人不成功就是因為沒做第三步。
2.編輯回去的systemui.apk及framework-res.apk不能直接放回去(framework-res.apk放回去會導致手機不斷重啟systemui.apk放回去會導致手機無上欄)

② apk反編譯出現異常,誰能告訴我是怎麼回事

我用的是apk改之理,反編譯異常應該是apk安裝包不完整,也就是說系統把apk進行了odex優化,把apk安裝包里後綴dex的文件提取出來,從而加快軟體運行速度,網上下個odex合並工具試一下,雖然我試過合並odex和apk文件,結果還是反編譯失敗。

③ 如何反編譯 android 中 /data/dalvik-cache/arm 下的文件

所有的 apk 內包含一個 classes.dex 文件。在 Dalvik上,apk包里的 dex文件在安裝的時候會通過 dexopt 轉化成另一個格式,叫odex(Opitimized dex),然後存在 /data/dalvik-cache裡面,如:

/data/dalvik-cache/data@[email protected]@classes.dex
雖然文件後綴還是 .dex,但是這個dex和apk內的那個已經不一樣了。這個文件是針對當前機器的硬體對 dex 文件進行了定製化,也就是說把這個放到別的設備上,不一定能運行。

PS: 在要編譯 rom 的時候,如果參數加上 "WITH_DEXPREOPT=true",會在 /system/app/ 下同時生成 .apk 和 .odex 文件(注意,這里後綴又用的 .odex,但實際上和系統在 /data/dalvik-cache/ 下的 .dex文件是一樣的)

ART

在 ART上,apk 包里的 dex文件在安裝的時候通過 dex2oat,也會生成一個後綴為 .dex 的文件,放在 /data/dalvik-cache中,如:

/data/dalvik-cache/arm/system@app@[email protected]@classes.dex
/data/dalvik-cache/arm64/system@vendor@app@[email protected]@classes.dex
這個文件後綴叫 .dex ,但是這個文件又不一樣了,這個既不是 dex 也不是 odex,用 dex2jar 的無法進行反編譯的。文件格式也完全不同,因為這其實就是一個實打實的 elf文件,這個文件已經可以直接在機器上運行了。

為何 pm.jar 是空的?

首先來了解一下 ROM 的編譯選項,看一下編譯的時候能做什麼事情, 大致了解就行了 。

編譯選項

WITH_DEXPREOPT

使能編譯時生成 OAT,避免第一次開機時編譯耗時,但會增大 system分區的空間消耗

DONT_DEXPREOPT_PREBUILTS

使能後,將不會對 Android.mk中包含了 include $(BUILD_PREBUILT)的 Apk進行 oat,例如 Gmail,它很可能會在後期通過商店自行升級,而升級後系統中的 oat文件則沒有意義了,但又無法刪除,會造成空間的浪費(oat比dex文件要大)

WITH_DEXPREOPT_BOOT_IMG_ONLY

僅僅針對 boot.img進行oat優化(boot.img中包含 boot.art和 boot.oat)

LOCAL_DEX_PREOPT ture|false|nostripping

可用於各個 Android.mk,對每個 package進行單獨配置,當設置為 true時,dex文件將會從 apk中剔除,如果不想剔除可使用 nostripping WPRODUCT _DEX PREOPT_*

WPRODUCT__DEX_PREOPT_*

PRODUCT_DEX_PREOPT_BOOT_FLAGS

這里的參數將會傳至 dex2oat,控制 boot.img的編譯優化行為。

PRODUCT_DEX_PREOPT_DEFAULT_FLAGS

控制除 boot.img 外,其他(如 jar, apk)的 OAT編譯行為 例如:

PRODUCT_DEX_PREOPT_DEFAULT_FLAGS := --compiler- filter=interpret-only
$(call add-proct-dex-preopt-mole- config,services,--compiler-filter=space)
WITH_DEXPREOPT_PIC ture|false

使能 position-independent code,這樣在dex2oat編譯生成的 odex文件在運行時將不必再從 /system 下拷貝到 /data/dalvik-cache/ 目錄下, 可以節省 /data 空間

WITH_ART_SMALL_MODE true|false

設置為 true 時,將只編譯處於 boot classpath 里的類,其他的均不編譯,這樣既能加快第一次開機時間,因為大部分必要的類已經編譯過了; 同時也能節省不少空間,因為 APP 都未進行編譯。缺點是可能損失一性能,這可能要平時覺察不出,但在跑分軟體上會有所體現

編譯選項的經典配置

為了提高第一次開機速度,WITH_DEXPREOPT是必須使能的,這樣則在編譯階段會完成 dex2oat的操作,避免在開機時間去做這個轉碼,節省了開機時間(6min以上縮短2min內)。

但會引起一個缺點,那就是 apk中還是包含了 class.dex(dexopt生成的),同時在對應的apk文件夾中又生成了已經轉碼成oat的 class.odex(dex2oat生成的),相當於這部分重復,造成了大量的空間浪費。

為了把 apk包里的 class.dex去除,節省空間,可以打開 DEX PREOPT DEFAULT := ture。

然而,這樣開機速度是快了,而且節省了不少system空間,但開機後,我們會發現即使在 system中已經存在 class.odex的 apk,第一次開機後還是會在 /data下面生成 class.odex,如data/dalvik-cache/arm64/system@app@[email protected]@classes.dex,這是何解?原來 Google為了提高安全性,在每一台機器開機時都會在之前的機器碼加一個隨機的偏移量,這個偏移量是隨機的,每台機器都不相同,而 data分區下的這些文件就是從 system下的 class.odex加上偏移而來。

④ 如何反編譯IMG(內核)文件

先介紹一下編譯核心的選項,希望能對大家消除對內核的神秘感有所幫助。
1.代碼成熟等級
2..處理器類型和特色
3.對模塊的支持
4.基本的選擇
5.即插即用支持
6.塊設備支持
7.網路選項
8.電話支持
9.SCSI設備的支持
10.I2O介面適配器
11.網路設備支持
12.配置業余無線廣播
13.紅外支持
14.ISDN的文件系統
15.舊型的光碟機類型(非IDE界面的光碟機)
16.字元設備
17.USB支持
18.文件系統
19.控制台驅動
20.音效卡驅動
21.Kernel hacking
第二節 內核版本
由於linux的源程序是完全公開的,任何人只要遵循GPL,就可以對內核加以修改並發布
給他人使用。Linux的開發採用的是集市模型(bazaar,與cathedral--教堂模型--對應
),為了確保這些無序的開發過程能夠有序地進行,Linux採用了雙樹系統。一個樹是穩
定樹(stable tree),另一個樹是非穩定樹(unstable tree)或者開發樹(developm
ent tree)。一些新特性、實驗性改進等都將首先在開發樹中進行。如果在開發樹中所
做的改進也可以應用於穩定樹,那麼在開發樹中經過測試以後,在穩定樹中將進行相同
的改進。一旦開發樹經過了足夠的發展,開發樹就會成為新的穩定樹。開發數就體現在
源程序的版本號中;源程序版本號的形式為x.y.z:對於穩定樹來說,y是偶數;對於開
發樹來說,y比相應的穩定樹大一(因此,是奇數)。確定是以″ root ″的身份簽入,
然後cd 到 /usr/src 。uname -r 這個指令將會顯示版本。內核版本的更新可以訪問<h
ttp://www.kernel.org/>。
第三節 編譯原因
Linux作為一個自由軟體,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了
舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的
系統度身定製一個更高效,更穩定的內核,就需要重新編譯內核。
通常,更新的內核會支持更多的硬體,具備更好的進程管理能力,運行速度更快、更穩
定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是
Linux使用者的必要操作內容。

為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主
要有下面四個考慮:
---自己定製編譯的內核運行更快(具有更少的代碼)
---系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)
---不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞
---將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些
以上是針對成熟的Linux套件如Redhat Linux而言,我的目的是為建造嵌入式Linux操作系
統做准備,也是必由之路。
第四節 准備工作
第一部分 新版本內核的獲取和更新
Linux內核版本發布的官方網站是< http://www.kernel.org/>,國內各大ftp上一般都可
以找到某些版本的內核。新版本的內核的發布有兩種形式,一種是完整的內核版本,另
外一種是patch文件,即補丁。完整的內核版本比較大,比如linux-2.4.0-test8.tar.b
z2就有18M之多。完整內核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分別
是使用gzip或者bzip2進行壓縮的文件,使用時需要解壓縮。patch文件則比較小,一般
只有幾十K到幾百K,極少的會超過1M。但是patch文件是針對於特定的版本的,需要找到
自己對應的版本才能使用。
編譯內核需要root許可權。把需要升級的內 拷貝到/usr/src/下(下文中以2.2.16的內核
的linux-2.2.16tar.gz為例),命令
#cp linux-2.2.16tar.gz /usr/src
先查看當前/usr/src的內容,注意到有一個linux的符號鏈接,它指向一個類似於linux
-2.2.14(對應於現在使用的內核版本號)的目錄。首先刪除這個鏈接:
#cd /usr/src
#rm -f linux
現在解壓下載的源程序文件。如果所下載的是.tar.gz(.tgz)文件,使用命令:
#tar -xzvf linux-2.2.16tar.gz
如果下載的是.bz2文件,例如linux-2.2.16tar.bz2,使用命令
#bzip2 -d linux-2.2.16tar.bz2
#tar -xvf linux-2.2.16tar

現在再來看一下/usr/src下的內容,發現現在有了一個名為linux的目錄,裡面就是需要
升級到的版本的內核的源程序。還記得那個名為linux的鏈接么?之所以使用那個鏈接就
是防止在升級內核的時候會不慎把原來版本內核的源程序給覆蓋掉了。現在也需要同樣
處理:
#mv linux linux-2.2.16
#ln -s linux-2.2.16 linux

如果還下載了patch文件,比如patch-2.2.16,就可以進行patch操作(下面假設patch-
2.2.16已經位於/usr/src目錄下了,否則需要先把該文件拷貝到/usr/src下):
#patch -p0 < patch-2.2.16
第二部分 准備主機板和相關硬體的說明手冊
其實也不用太詳細,只要知道您的硬體是屬於哪一類型就行了。例如:有一張SCSI卡,
那就要知道這張卡的名字,有一台cd-rom,就要知道這台光碟機是哪一種牌子的,是否為標
準的IDE/ATAPI界面,還是另有專屬介面卡呢?或者,主機版是否有支持Triton晶元(通
常586以上的電腦常有),這些信息能幫助我們,使得設定變得清楚且容易。
因此,不管您有什麼使用手冊,准備好吧。即使現在不用,將來還是會用到的(設X-w
indow system時要顯示卡的手冊)。
第三部分 檢查音效卡的IRQ設定和其種類
如果配有一張音效卡,除了要知道卡的種類外(例如 Sound Blaster)還需要知道這張卡
的IRQ地址。一般來說,盧卡的IRQ地址是5或7而IO地址則為220。DMA則l,不過,有時不
同的音效卡可能會有不同的設定。因為稍後的選項里,就會要填入這些數字。
第四部分 編譯核心的硬體需求
在編譯核心時,確定您的RAM最好在8MB以上, 否則可能會很慢而且問題會很多,記得查
看swap有沒有打開(用free指令)。此外,最好不要超頻,不然很有可能會發生signal
11的錯誤,使得編到一半的核心停了下來,其實編譯核心就好比編譯程序一樣,只是因
為構成核心的程序太多了,因此我們能小心盡量小心。

⑤ 如何編輯製作自己的 安卓系統刷機包

貌似聽大神說過
刷機包核心內容是二進制的
而且反編譯。一般的手段不可以
不對別噴我
我也是道聽途說。

⑥ 如何反編譯華為的SystemUI.apk文件

操作步驟:
第一:要在你的PC上建立Java的環境,才能執行編譯工作。具體設置方法可參考線刷包移植卡刷包教程步驟

第二:下載Apktool工具 apktool.zip
(2.68 MB)。
下載後解壓得到apktool文件夾,把裡面的三個文件放在CDM模式(win+R)默認的目錄下。
例如,我的是Windows7 32位
我的CDM模式默認目錄是C:用戶(Users)Administrator。

第三:如果你是要編譯系統文件的話,請將你要修改的rom里提取framework-res.apk,再用CMD模式「安裝」。(不這樣做會導致解包錯誤)
安裝方法:把framework-res.apk放在剛才放在C:用戶(Users)Administrator文件夾下。
cmd模式執行apktool if
framework-res.apk這個是安裝framework-res.apk

注意:1.第三步很重要,很多人不成功就是因為沒做第三步。

2.編輯回去的systemui.apk及framework-res.apk不能直接放回去(framework-res.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)

⑧ 如何反編譯系統的apk

1
下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系統)

2
解壓剛剛下載的文件,並將解壓的文件放入C:\Windows目錄下

3
啟動控制台,輸入apktool,回車可查看到apktool工具常用指令

4
新建一個文件夾,用於存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時放入用於測試的android app包(test.apk)

5
控制台輸入:apktool d D:\apk\test.apk D:\apk\test 進行反編譯操作
中句話中「D:\apk\test.apk」指apk存放位置,「D:\apk\test」指反編譯後文件存放的位置

6
反編譯成功之後,進入D:\apk\test文件目錄可以查看到反編譯後的文件

⑨ 怎麼反編譯settings.apk

事項:
1.反編譯系統文件必須是從官方提取的.APK文件。(因為APK只能實現一次反編譯,就是說如果這個文件已經反編譯過了,就不能再次反編譯,就算你反編譯了也不能回編譯。)
2.編譯工具論壇上很多可以自己搜索下載,存放的位置文件夾最好不帶中文。
3.覆蓋原文件時一定要切記,先移動到系統文件夾下,然後修改許可權,然後在覆蓋原來APK(不然會怎麼樣,我相信大家懂的{:soso_e144:} )
4.就算附件中有反編譯工具也要自己搭建好java環境(因為一切反編譯的工具都是建立在JAVA環境的基礎上的)

開始教程:
1.關於JAVA、環境變數,請搜索教程帖
2.環境變數設置成功後,就是提取你手機上的Settings.apk。
3.進行反編譯,(我想有一定美化基礎的應該很會簡單的),反編譯後得到Settings文件夾打開然後\res\values-zh-rCN\找到strings文件,右鍵打開,打開方式選擇看你習慣。

修改好以後選擇保存,回編譯。
回編譯好的APK用滑鼠右鍵單擊 選擇用好壓打開然後將resources.arsc 拖拽出來。然後在把JU1.1的Settings.APK提取出來也用好壓打開,將剛才拖拽的resources.arsc 文件在拖拽到JU得APK中。然後點覆蓋。然後在將其移動到SYSTEM\APP里 就OK了(記得修改許可權)

這個需要在手機上操作
打開RE管理器,打開裡面的system,找到build.prop.長按彈出對話框,選擇:使用文本編輯器打開(右上角要改為讀寫哦)
第四行的:ro.build.display.id= 等號後面就是你想要輸入的不要過長哦~
第八行的:ro.build.version.release= 同上

修改完成後,點擊左虛擬鍵,也就是設置鍵,選擇:保存並退出。
你會在build.prop下面發現它的備份文件,刪除,重啟,OK~全部完成~

閱讀全文

與反編譯系統升級包相關的資料

熱點內容
伺服器的雙電是什麼意思 瀏覽:614
程序員離開後代碼運行幾天 瀏覽:386
多多樂app是什麼幹嘛的 瀏覽:346
文檔加密授權工具 瀏覽:436
命令與征服將軍閃退 瀏覽:132
vs2019預編譯怎麼設置 瀏覽:780
沈陽中軟python培訓班 瀏覽:493
逆戰文件夾怎麼放 瀏覽:120
怎麼統一刪除文件夾raw文件 瀏覽:121
卡爾曼濾波演算法書籍 瀏覽:769
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:844
安卓怎麼下載60秒生存 瀏覽:803
外向式文件夾 瀏覽:240
dospdf 瀏覽:431
怎麼修改騰訊雲伺服器ip 瀏覽:392
pdftoeps 瀏覽:496
為什麼鴻蒙那麼像安卓 瀏覽:736
安卓手機怎麼拍自媒體視頻 瀏覽:186
單片機各個中斷的初始化 瀏覽:724
python怎麼集合元素 瀏覽:481