導航:首頁 > 源碼編譯 > 反編譯rom

反編譯rom

發布時間:2022-02-01 17:16:05

⑴ 如何用手機修改ROM,需要什麼軟體(詳細)多謝,本人是新手。

建議你下載現成的android ROM。
android ROM的組成非常復雜,不是隨隨便便就能做成的。
既然你說是修改,那麼,直接用ES文件管理器即可,解壓ROM包,裡面主要由15部分組成

1)META-INF文件夾:內含升級腳本及ROM的簽名
2)System文件夾:包含對系統所有界面,軟體等的控制文件夾
3)Boot.img文件:android內核文件
4)App文件夾:放置系統軟體的目錄
5)Bin文件夾:放置android系統本地程序, 主要是linux系統自帶的組件
6)Etc文件夾:放置android系統配置文件,如apn文件等
7)Fonts文件夾:放置字體文件,包含標准字體和粗體、斜體、中文、英文等
8)Framework文件夾:放置android系統平台框架文件及布局控制
9)Lib文件夾:放置系統底層庫及運行庫文件
10)Media文件夾:放置系統鈴聲音樂文件夾及開機動畫文件
11)Tts文件夾:放置手機的語音文件
12)Usr文件夾: 放置用戶文件,包含共享、鍵盤布局、時間區域文件等。
13)Vendor文件夾:放置ROM廠商定製內容
14)Xbin文件夾:放置用戶系統支持程序文件
15)Build.prop文件:系統屬性配置文件

裡面部分是在System 文件夾內,所以主要修改System文件夾即可。
修改System 文件夾操作,多數人只是修改apk包。
apk文件夾內裡面所有apk包都是系統應用(原本Root後才可以刪的應用),可以刪除小部分,同樣也可以反編譯這些包,以修改。
也可以修改代碼,需要java代碼編輯器。
封包時再壓縮即可。

實際上,android ROM包很復雜,不是三言兩語就能教出所有的步驟,不是隨隨便便就能修改地非常好的,建議上網多學習這些內容。

⑵ 如何反編譯android應用並重新打包

一.看android的源代碼

1)將Apkd.apk 用zip解壓後,出現了一個classes.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)進入到dex2jar目錄中,運行情況如下:
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.
在apk所在的目錄會出現 classes_dex2jar.jar 文件。
3) 用JD-GUI對jar包進行查看,可以查看源文件

二.反編譯apk

1.在下載APKTOOL中的三個文件(aapt.exe、apktool.bat、apktool.jar)解壓縮到你的Windows安裝目錄下,以方便使用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.進入到apktool.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源文件(是用smali語言寫的,可以對照java看)。

三.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文件。具體情況請看常見問題

四.smali與java源碼對照,並做出相應的修改

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;
}

}

對應的smali源代碼:
.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

通過對比可以看到,常量是沒有必變的,可以根據的smali的語法,進行相應的修改

五.3、打包、簽名和安裝修改後的apk

修改完了,就可以打包回apk了。執行以下命令:
apktool b decode_dir
在mygame目錄下的dist在會看到打包好的apk。
當然,現在一般是無法安裝的,因為apk還沒有簽名。下面就來簽名。簽名需要keystore文件,我已經有專用的keystore了,如果還沒有,請參閱這里進行生成。
執行以下命令為重新編譯的my_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 正確嗎?
[否]: y

輸入的主密碼
(如果和 keystore 密碼相同,按回車):

D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
輸入密鑰庫的口令短語:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/DEMO_KEY.SF
正在添加: META-INF/DEMO_KEY.RSA
正在簽名: res/drawable-hdpi/ic_launcher.png
正在簽名: res/drawable-mdpi/ic_launcher.png
正在簽名: res/drawable-xhdpi/ic_launcher.png
正在簽名: res/drawable-xxhdpi/ic_launcher.png
正在簽名: res/layout/activity_main.xml
正在簽名: res/menu/main.xml
正在簽名: AndroidManifest.xml
正在簽名: classes.dex
正在簽名: resources.arsc

D:\developer\tools\test_apk\new\decode\dist>
到此為止,修改後的apk可以正常的安裝了,不過,在安裝之前,必須要先卸載以前的apk,不能直接替換(因為簽名不一樣)

⑶ 怎樣將BIOS ROM中的內容反匯編成匯編指令

需要自己買個燒解器,插上flash,讀出來,存成bin文件,然後用反匯編器進行反匯編即可。
linux下用nasm就可以了,如果是windows系統,建議使用ida之類的軟體進行反匯編。

⑷ 如何製作刷機包可不可以從手機中導出rom進行修改,編譯為刷機包

你可以藉助第三方工具進行修改,像用蘑菇rom助手
什麼的,都比較簡單,你在網上找找視頻

⑸ 我想知道,rom的美化和優化要不要反編譯就是說替換狀態欄圖標,字體這些的,又或者build優化

替換狀態欄圖標字體需要反編譯,替換系統字體不需要,build優化也不需要反編譯

⑹ 想學習4.4.2rom修改美化移植,包括反編譯apk,論壇上找到的教學都是安卓2.x的有沒有新一些

請問你了解了ROM包的結構沒

⑺ 我想修改別人修改過的安卓ROM裡面的framework-res.apk文件,反編譯後沒問題,可是回編譯不了,怎麼弄啊

twframework-res.apk 刷機包里 SYSTM下 framework 里 直接用WINRAR打開 或改後綴RAR 裡面 RES里 drawable帶---的四個文件夾 就是圖片文件夾 可以在UOT廚房修改

⑻ 如何反編譯華為的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放回去會導致手機不斷重啟,

⑼ 安卓設置反編譯後要打開哪個文件修改代碼啊,把黑色背景改成全透明的,,注意是全透明的,哪位rom大神

直接找個透明框架唄 。

⑽ 如何反編譯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放回去會導致手機無上欄)

閱讀全文

與反編譯rom相關的資料

熱點內容
安卓手機的應用鎖怎麼解 瀏覽:733
linux增加路徑 瀏覽:845
sql身份證號最後四位加密 瀏覽:533
xp系統表格加密 瀏覽:854
光遇安卓軍大衣什麼時候上線 瀏覽:838
android應用商店圖標 瀏覽:341
java計算圓的面積 瀏覽:643
應用編譯優化recovery 瀏覽:577
域控命令n 瀏覽:258
php導出文件 瀏覽:13
谷歌地圖網頁版無法連接伺服器地址 瀏覽:298
菜鳥工具在線編譯python 瀏覽:858
柵格化命令有何作用 瀏覽:823
為什麼壓縮文件不能解壓 瀏覽:311
足球app哪個軟體好 瀏覽:96
產品經理逼瘋程序員的一天 瀏覽:17
修改svn伺服器ip地址 瀏覽:584
下列關於編譯說法正確的是 瀏覽:246
java馬克思 瀏覽:118
在設置的應用加密為啥沒有微信 瀏覽:307