導航:首頁 > 源碼編譯 > 怎麼反向編譯app

怎麼反向編譯app

發布時間:2022-12-13 13:17:31

1. 如何反編譯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,不能直接替換(因為簽名不一樣)

2. 求安卓軟體反編譯修改教程

1、baksmali:classes.dex反編譯為smali格式

(smali:smali格式編譯打包為classes.dex,但由於smali格式類似匯編,比較難閱讀,所以用dex2jar進行輔助 )
2、dex2jar:classes.dex轉為jar包
3、jdgui:jar反編譯並閱讀

操作順序:

apk用zip解開,裡面的classes.dex分別用baksmali處理為smali,用dex2jar處理成jar,然後用jdgui看代碼,找好java文件中要改的位置後,在smali里找對應的位置修改,改完了用smali再編譯為classes.dex,覆蓋原來apk里的同名文件,最後重新簽名。注意安裝時要先刪除原來手機里的版本,因為簽名不同。

3. apk反編譯工具怎麼使用

反編譯apk工具使用最廣泛的就是apktool,這里先說一下整個流程用到的工具有:

1.apktool,下載後拿到apktool.bat和apktool.jar,然後把這兩個工具放到C:Windows底下。這個工具的作用主要是得到apk的資源文件和配置文件

2.dex2jar 下載這個工具解壓後放到任意盤都可以,後面主要用這個根據apk的classes.dev文件生成供jd-gui工具解析的jar。

3.jd-gui上一步提到其作用,和2一樣,也是下載後放到任意盤即可,到時候只要運行jd-gui.exe打開上一步生成的jar即可查看源碼,下面對這個工具不再贅述

下面詳細說一下前面兩個工具類的詳細用法:

先說apktool的用法:

1.下載後拿到apktool.bat和apktool.jar,然後把這兩個工具放到C:Windows底下

2.cmd打開後默認是你的計算機,默認的不用改,直接輸入apktool,如果出現如下圖的效果,即表示准備已就緒


4. 怎麼反編譯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~全部完成~

5. 如何反編譯系統的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文件目錄可以查看到反編譯後的文件

6. android studio 如何回編譯一個APP

android studio中不能編譯反編譯出來的文件,android studio只能編譯源代碼。

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

具體步驟:
首先將apk文件,將後綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的;
解壓下載的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盤的根目錄里

7. 如何將e4a寫的app反編譯成源碼

public String Getgtk(String skey) {
String Getgtk = "";
int hash = 5381;
for (int i = 0; i <= IntegerVariant.getIntegerVariant(文本操作.取文本長度(skey)).sub(ByteVariant.getByteVariant((byte) 1)).getInteger(); i++) {
hash = (位運算.位左移(hash, 5) + hash) + 轉換操作.字元轉代碼(文本操作.取文本中間(skey, i, 1));
}
return 轉換操作.整數到文本(位運算.位與(hash, (int) 轉換操作.到十進制("7fffffff")));
}

8. apk怎麼反編譯換圖標比較簡單的方法

一、准備工作
1、下載安裝java jdk
2、配置java環境
3、下載apktools反編譯工具包
二、具體操作
1、將下載來的apktools工具包解壓至c:\目錄下,然後將需要反編譯(修改)的apk文件放入解壓文件夾內。今天就用一鍵鎖屏來做試驗吧。

2、打開一鍵apktools.exe工具,因為不是系統文件所以就直接反編譯,不需要安裝環境!選擇2,然後選擇文件名。這里我們是lockscreen.apk所以我們選2!

3、等待解壓完成,我們在lockscreen文件夾內的res目錄里去修改 程序名稱和程序圖標。程序名稱的文件路徑為 lockscreen\res\values-zh-rCN\strings.xml 我們使用記事本打開 找到app_name 在 兩個>< 修改自己需要顯示的程序名稱,我們就把 一鍵鎖屏改為 鎖屏,修改好以後保存即可~

4、然後在 lockscreen\res\drawable-hdpi 文件夾內替換圖標。先找到現在的程圖標,因為一鍵鎖屏很簡單,所以只有一個圖標。我們記下圖標的名字 lock.png 然後刪除它,將我們准備好的圖標放入目錄下,改名為剛才的名字 lock.png。

5、然後返回到apktools解壓文件夾,編譯後的文件在 回編apk生成目錄 下,我們將其簽名,然後安裝即可。

9. 如何使用apktool反編譯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文件目錄可以查看到反編譯後的文件

10. 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

回編譯完成。

閱讀全文

與怎麼反向編譯app相關的資料

熱點內容
文件夾變成了 瀏覽:560
linuxpython綠色版 瀏覽:431
怎麼下載小愛同學音箱app 瀏覽:554
python佔位符作用 瀏覽:76
javajdbcpdf 瀏覽:543
php網頁模板下載 瀏覽:192
python試講課pygame 瀏覽:409
安居客的文件夾名稱 瀏覽:677
家裡伺服器如何玩 瀏覽:451
網站源碼使用視頻 瀏覽:748
stc89c52單片機最小系統 瀏覽:452
郵件安全證書加密 瀏覽:416
雲伺服器如何訪問百度 瀏覽:279
常州電信伺服器dns地址 瀏覽:839
用小方塊製作解壓方塊 瀏覽:42
圖像壓縮編碼實現 瀏覽:68
特色功能高拋低吸線副圖指標源碼 瀏覽:71
西方哲學史pdf羅素 瀏覽:874
python最常用模塊 瀏覽:184
溫州直播系統源碼 瀏覽:112