當前位置:首頁 » 安卓系統 » android反編譯源碼

android反編譯源碼

發布時間: 2022-12-13 07:32:44

㈠ 如何將反編譯android代碼

反編譯android代碼並在eclipse中查看: apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件 下載上述工具中的apktool,解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下, 打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f test.apk test 在改目錄下會生成一個classes_dex2jar.jar的文件,然後打開工具jd-gui文件夾里的jd-gui.exe,之後用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了,效果如下:

㈡ Android 將 apk 反編譯為源碼

將 apk 解壓,在解壓後的文件夾中可以找到 classes.dex 文件。(除了 classes.dex 文件,可能還會有 classes2.dex , classes3.dex 等等,本文以 classes.dex 為例,對其他幾個 dex 文件的操作是類似的)

使用 dex2jar 工具,將 dex 文件轉換為 jar 文件

使用方式:

執行命令後,生成的 classes-dex2jar.jar 就是我們需要的 jar 文件。

使用 Luyten 工具查看 jar 文件,就能看到反編譯後的源碼了。

本例中, classes.dex 文件中存儲的是 android 的一些基礎庫,實際編寫的源碼在 classes3.dex 中,對 classes3.dex 執行第二步,查看生成的 classes3-dex2jar.jar 文件,可以看到如下內容:

這就是反編譯 apk 的基本操作了。

Cmder 是一個非常好用的命令行工具。

效果如下:

只需要執行 apk2jar 命令,就可以實現把 apk 解壓到 apk_ 文件夾中,並將 apk_ 文件夾中的 classes.dex 文件轉換為 jar 。原理就是通過 Cmder 添加別名,把上述的第一步和第二步中執行的命令行組合起來了。

為 Cmder 添加別名很簡單,編輯 Cmder安裝目錄\config\user_aliases.cmd 文件,將別名添加到裡面即可。本例添加的別名如下:

其中:

㈢ 自己可以編譯安卓源碼嗎

用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:

sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」

其中[email protected]為你自己的郵箱.

簡要說明

android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.

源碼下載

由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)

repo工具下載及安裝

通過執行以下命令實現repo工具的下載和安裝

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


這里寫圖片描述

執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.

錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.

    結束吧

    到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.

    ㈣ android反編譯生成的代碼如下 像MainActivity.access$000(this.this$0);這樣的代碼該怎樣解釋,怎麼改

    access$0表示調用一個外部類的方法,說明這段代碼是在內部類中使用的:

    在調用的外部類方法定義代碼的上面,應該會有一段。methodstaticsyntheticaccess$0。

    的代碼,這個代碼裡面才是真正要調用的方法。

    安卓虛擬機指令在調用外部類方法的時候,需要區分類的調用關系。

    thiscmdisdeprecated,usethed2j-dex2jarifpossible

    dex2jarversion:translator-0.0.9.15

    dex2jar..Apkd(d2j)classes.dex->..Apkd(d2j)classes_dex2jar.jar



    (4)android反編譯源碼擴展閱讀

    反編譯是一個復雜的過程,反編譯軟體有:

    1、SWF相關的反編譯程序

    ActionScriptViewer

    第一個也是最強大的商業SWF反編譯工具,同類產品中,它的AS代碼反編譯效果最好,SWF轉Fla工程重建成功率最高。

    2、Android相關的反編譯程序

    SMALI/BAKSMAL

    SMALI/BAKSMALI是一個強大的apk文件編輯工具,用於Dalvik虛擬機(Google公司自己設計用於Android平台的虛擬機)來反編譯和回編譯classes.dex。其語法是一種寬松式的Jasmin/dedexer語法,而且它實現了.dex格式所有功能(註解,調試信息,線路信息等)。

    ㈤ android反編譯源碼時,個別類出現如下錯誤

    反編譯的代碼只能作為參考,如演算法,布局,設計,圖案,因為Android反編譯,比如在的setContentView(123567)的活動,這將是一個數字,而不是我們常見的R.layout.xxx,類似R.String.xxx等都是一樣的,所以編譯不通過正常的。 如果您想了解該項目,作為一個模板,你可以去在github上或谷歌代碼來找到一些開源項目,如果你選擇反編譯反編譯2.2之前的提議apk文件,然後不要混淆編譯器!如:推薦+ Android的開源項目數量,迫使大量的工作在網上迫使這樣的研究PDF書。!

    ㈥ 如何反編譯Android 的apk/dex/odex,獲得源碼

    關於APK,DEX的介紹

    當我們編譯一個安卓項目的時候,整個項目會被打包成一個 .apk文件。這個文件其實是一個標準的zip文件,因此可以用解壓縮工具打開。這個apk文件一般都包含程序的代碼(在classes.dex文件中), 資源文件, 證書, manifest 文件等。 其中對我們最重要的是classes.dex文件,因為編譯後的位元組碼(bytecode)都是放在這個文件中。我們後面講的反編譯就是針對這個dex文件來的。

    反編譯普通的APK文件:

    對於普通的APK/DEX文件的反編譯,其實工具有很多, 包括:

    • ByteCode Viewer: 一個可視化的集成工具,說實話,不太好用,不夠穩定,生成代碼質量中等。

    • dex2jar + jd_gui: 這兩個工具組合還可以, 用起來比ByteCode Viewer麻煩一些,但比較穩定,生成代碼質量中等。

    • 在線反編譯工具JADX: http://www.javadecompilers.com/apk , 這是基於SourceForge上的JADX的開源工具來實現的。本來以為在線反編譯質量不會好,但出人意料的是:JADX是我發現的最好的反編譯工具, 不但使用簡單(直接上傳,轉換,下載就ok),而且反編譯出來的代碼質量很高,特別是變數命名方面,可讀性很不錯。

    • 反編譯ODEX文件:

      Android 5.0 Lollipop以後,Google用ART代替了以前的Dalvik,對於普通的app來說我們仍然可以用上面的方法來把dex文件反編譯成Java源代碼。但對於系統預裝的App,特別是類似應用商店,播放器等, 你會發現這些應用的apk文件中找不到對應的classes.dex文件,而是會發現在其子目錄下有個.odex文件。 那如何反編譯這個odex文件呢?我通過google查了查,知道應該用baksmali,但從github上下載了幾個版本都不行,報各種不同錯誤。經過反復搜索和嘗試,終於找到了這篇文章
      : http://www.naldotech.com/how-to-deodex-applications-on-android-5-0-lollipop/ 。 具體方法如下:

      1. 從這里下載工具包, 解壓縮到本地。 這里的baksmali的版本是2.0.3. 不同版本的baksmali針對的Android內核不同。有時候高版本反倒不好用。

      2. 打開工具所在目錄, 按住shift鍵, 點擊滑鼠右鍵,打開windows命令窗口

      3. 把 odex文件拷貝到該目錄

      4. 在命令窗口運行: oat2dex.bat *.odex. 正常情況下,應該顯示OK等信息。如果報錯的話,說明這個文件無法轉換,後面的也不用試了。

      5. 運行 oat2dex.bat *.odex temp.dex . 運行後會創建一個temp.dex文件。

      6. 運行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 運行後會創建一個source的文件夾,並將temp.dex反編譯到該文件夾。-a 21 表明的是Android內核的版本21

      7. 運行 java -jar small-2.0.3.jar -a 21 source -o classes.dex, 反編譯為classes.dex文件。

      需要注意的是:由這種方式反編譯成的classes.dex 文件相比原生的classes.dex 還是缺少了些信息,因此反編譯這種classes.dex 文件後生成的java代碼可讀性會更差些。

      8. 用在線工具JADX 來把 classes.dex 最終反編譯為java代碼。

    ㈦ 反編譯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)

    ㈧ android 軟體反編譯 可以獲得源代碼嗎

    android培訓中有很重要的一個知識點就是反編譯獲得java源代碼,但是這個知識點又恰恰是很多同學的軟肋,很難掌握,今天就來幫你解決你的難題。

    環境:win7

    步驟:

    1,下載工具包

    dex2jar-0.0.9.13--反編譯工具--name=dex2jar-0.0.9.13.zip&can=2&q=

    jd-gui-0.3.5.windows.zip--反編譯後的文件查看器

    分別解壓。

    2,將源apk的後綴名修改.jar並解壓,得到其中的classes.dex文件,將classes.dex復制到dex2jar.bat所在目錄dex2jar-0.0.9.13文件夾

    在命令行下定位到dex2jar.bat所在目錄 (開始>運行>cmd>cd c:\dex2jar-0.0.9.13)

    運行 :dex2jar.bat classes.dex

    將生成 classes_dex2jar.jar

    接下來就可以通過jdgui下的jd-gui.exe程序打開生成的jar包看到java代碼了。

    多看多做多練習是學習語言必須經歷的過程,學習不是一朝一夕的事情,只有恆之以衡的堅持才能帶來成功。希望以上的Android教程能給大家帶來幫助。

    ㈨ Android app證書反編譯代碼

    反編譯代碼dex2jar。
    在學習android程序的開發過程中,有時候需要借鑒別人的代碼,提升自己的開發水平。
    前面說了反編譯,我們當然不希望我們的應用被別人反編譯,所以就得在打包的時候進行代碼混淆,這樣的包也可反編譯出代碼,但是代碼的可讀性很低,從而達到保護代碼的目的。

    ㈩ 如何高效閱讀android反編譯後的源碼

    一、工具准備:apktool , dex2jar , jd-gui
    二、使用dex2jar + jd-gui 得到apk的java源碼
    1.用解壓工具從 apk包中取出 classes.dex 文件
    用命令(dex2jar.bat classes.dex)得到一個 jar文件
    2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件
    三、使用apktool得到apk的xml文件

    1. 用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包2.從 xxx_xml 文件夾得到xml文件四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。

    五、應用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr

    1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW

    2.1復制valuesstrings.xml 到 values-zh-rCN 並翻譯.

    2.2 去廣告見;

    3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk

    或命令( apktool b xxx out.apk)

    詳細代碼

    熱點內容
    安卓手機怎麼反色 發布:2025-03-19 06:15:19 瀏覽:820
    安卓開視頻時聲音小怎麼辦 發布:2025-03-19 06:08:18 瀏覽:578
    文件伺服器訪問速度慢 發布:2025-03-19 05:45:36 瀏覽:636
    python的下載與安裝 發布:2025-03-19 05:41:38 瀏覽:770
    安卓怎麼用手電筒檢測換屏 發布:2025-03-19 05:30:33 瀏覽:674
    蘋果6怎麼設置短密碼 發布:2025-03-19 04:44:41 瀏覽:20
    三人樂隊怎麼配置 發布:2025-03-19 04:34:42 瀏覽:917
    趣編程入口 發布:2025-03-19 04:25:09 瀏覽:942
    a的存儲形式 發布:2025-03-19 04:24:00 瀏覽:792
    android鍵盤修改 發布:2025-03-19 04:21:45 瀏覽:167