1. 程式人生 > >odex轉dex和重新打包apk

odex轉dex和重新打包apk

ODEX是安卓上的應用程式apk中提取出來的可執行檔案,是通過apk安裝包的中的dex優化過的,再把apk包裡的dex檔案刪除。
這樣做可以加快軟體的啟動速度,預先提取,減少對RAM的佔用,因為沒有odex的話,系統要從apk包中提取dex再執行。

Odex化後系統啟動和程式執行速度大大提高,穩定性不變。因此推薦做Odex化。
一般來說官方rom都是odex化的rom(含Odex檔案),所以要從這中ROM中提取apk需要將odex轉成dex。

下載軟體工具:

現在我們要對CardManager.odex進行反編譯,以CardManager.odex為例。

1:java -jar baksmali-1.3.2.jar -a 12

 -x CardManager.odex    

這時候出現問題:

Error occured while loading boot class path files. Aborting. 
org.jf.dexlib.Util.ExceptionWithContext: Cannot locate boot class path file bouncycastle.odex 
at org.jf.dexlib.Code.Analysis.ClassPath.loadBootClassPath(ClassPath.java:237) 
at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:145) 
at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110) 
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:96) 
at org.jf.baksmali.main.main(main.java:278) 
這是由於缺少core.odex, ext.odex, framework.odex, android.policy.odex, services.odex, bouncycastle.odex, core-junit.odex, 這7個檔案的問題,將framework下的這7個odex檔案一併考到同級目錄下,在執行命令會生成一個out資料夾,裡面的檔案以.smali結尾

2:生成 classes.dex檔案

執行 java -jar smali-1.3.2.jar out/ -o classes.dex

反編譯framework.odex 

java -Xmx512m -jar baksmali-1.3.2.jar --api-level 12 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d framework/ -x framework.odex 

重新打包

  • 首先,準備工具
    • apktool apk_manager , 點這裡下載
    • zip 的 管理工具 ,這個 ubuntu 底下預設有了。
    • jdk 的 jarsigner , 我這裡路徑為 /home/nxliao/tool/android/jvm/java/jdk1.6.0_25/bin/jarsigner
    • android sdk 的 debug.keystore ,在ubuntu下為 ~/.android/debug.keystore
  • 準備實驗物件
  • 改裝
    1. 用 zip 管理工具開啟這個 apk,刪除裡面的 META-INF 目錄
    2. 用 apktool 解壓處理過的 apk
       $ ./apktool d ~/tmp/jianjiuhongchenfengha_V1.0_mumayi_85342.apk ~/tmp/jianjiuhongchenfengha
    3. 用 vi 開啟目的碼
      $ vi ~/tmp/jianjiuhongchenfengha/smali/com/sg/android/fish/FishActivity.smali
    4. 轉到第 330行(在 .method private init()V 內),將 const/16 v6, 0xc8 修改成 const/16 v6, 0x647d (也可以設定成其它數值),即可將初始金錢改成 0x647d =25752
    5. 儲存退出
    6. 用 apktool 重新打包 apk
      $ ./apktool b ~/tmp/jianjiuhongchenfengha ~/tmp/jian.apk
    7. 這時候新的apk還不能直接安裝,需要打上簽名。用jdk的 jarsigner 打上簽名
         $ jarsigner -verbose -storepass android -keystore ~/.android/debug.keystore ~/tmp/jian.apk androiddebugkey

相關推薦

odexdex重新打包apk

ODEX是安卓上的應用程式apk中提取出來的可執行檔案,是通過apk安裝包的中的dex優化過的,再把apk包裡的dex檔案刪除。 這樣做可以加快軟體的啟動速度,預先提取,減少對RAM的佔用,因為沒有odex的話,系統要從apk包中提取dex再執行。 Odex化後系統啟動和程

一步一步帶你反編譯apk,並教你修改smali重新打包

一、工具介紹: 1.apktool:aapt.exe,apktool.bat,apktool.jar;三個在同一目錄結合使用,用來反編譯apk,apk重新打包; 2.dex2jar:該工具作用是將classes.dex檔案,反編譯出原始碼(如果apk未加固),反編譯出文件

APK檔案使用ApkTool解包反編譯重新打包及簽名

前段使用一直使用一個手機APK軟體,不過最近軟體更新,出現了一個很討厭的語音提示,於是想通過重新編譯把語音提示去掉。 【準備工作】 配置JAVA環境,到http://www.java.com/下載並進行安裝,如已安裝的可忽略 Windows下只需要下載這兩個檔案

重新打包apk簽名jarsigner簡單使用

jarsigner簡單使用說明 這裡並不需要到jdk的bin目錄下只要在c:目錄下都行 這是我試過的方法,再說一遍,我試過了,不是抄襲,雖然也算不上我的自創,但是這是最簡單粗暴的命令,私鑰自己在eclipse建立,這裡不詳細說明  jarsigner -verbose -ke

odexdex總結

在安卓系統所謂系統檔案在哪 cd /system/app ls 可以看到好多apk 啊 還有xx.odex 如果想移到別的手機安裝他們 1把odex轉dex 2打包apk 3簽名 第一步 下載jar檔案 連結傳送 http://dl.dbank.com/c0jp4

手把手教你將odexdex

android 開發中經常需要解決一些相容性問題,通常情況下我們會把對應的系統預裝的app拉出來,逆其結構看其有何端倪。過程中,我們會發現,有一些rom ,/system/app 目錄下是以xxx.odex的檔案形式存在,那麼odex 是什麼呢? odex

Mac下反編譯重新編譯打包APK

反編譯APK需要的工具如下: - dex2jar 這個工具用於將dex檔案轉換成jar檔案 下載地址:http://sourceforge.net/projects/dex2jar/files/

android 反編譯(dex odex),非腦殘帖,絕對可靠

Android 反編譯 反編譯odex檔案(例如framework.odex),若是反編譯dex,直接第4步 1.由於反編譯odex的工具在D:\Develop tools\android反編譯工具\odex中,因此為了執行命令方便一點在odex資料夾裡面,將syste

手機藍牙串口硬件ANDROID的APK程序開發源代碼

藍牙 RS485 RS232 ANDROID 源代碼 一.概述深圳宏進藍牙模塊是專為智能無線數據傳輸而打造,采用英國CSR公司BlueCore4-Ext芯片,遵循V2.1+EDR藍牙規範。本模塊支持RS232串口以及RS485總線接口,並支持SPP藍牙串口協議,具有成本低、體積小、功耗低、

替換APK中的檔案重新打包

這兩天遇到一個問題,一直沒有頭緒,為了確認原因,需要將新的資源和程式碼,替換到老包中,看看問題是否會出現,結果很無情,問題依舊。不過倒是研究了下如何替換assets中的檔案。指令碼基本都是網上搜集來的,發現這個方法有個bug,替換可以,無法刪除,因此res會變大。用的時候要注意這點。 #簽名相關

apk解包+修改原始碼+重新打包 修改Android端app教程 修改apk檔案教程

修改之前一定要先安裝java開發環境,不會裝的去自行百度。文章較長,耐心閱讀。 一直在做Android應用開發,但對於從自己手中輸出的apk包,瞭解並不是很深。最近想研究一下,消除下自己的一些技術盲點。 好吧,廢話少說,先切入主題。這篇文章主要介紹如何獲取apk包中的de

Android Protect-0.ApkTool重新打包Auto-Sign簽名

APK重打包 使用dex2jar+jd-gui我們可以把.dex轉換成.jar並檢視檔案, 通過ApkTool我們可以反編譯apk為apk資料夾,兩者對比,我們就能改動apk資料夾中相關的地址smali檔案或資原始檔。 修改之後,我們需要使用ApkTool重打

Android簡單的反編譯Apk重新打包,簽名釋出

本文簡單介紹apk是如何修改logo(ic_launcher),類似的資原始檔修改也可以通過此方式。不過要修改class的話就要涉及到smali的學習了,這裡就暫且不談,後續有需要再做更新。 一、工具介紹: apktool:用來反編譯apk,apk重新打包

Android實用技能:你應該掌握的APK反編譯技巧以及重新打包釋出

需要的工具 1,apktool: 反編譯獲取資原始檔的工具,包括圖片資源和佈局檔案等的獲取 下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads 2,dex2jar:反編譯獲取原始碼的工具,將classes.dex 轉化為jar

)android Apk打包過程概述_android是如何打包apk

最近看了老羅分析android資源管理和apk打包流程的部落格,參考其他一些資料,做了一下整理,脫離繁瑣的打包細節和資料結構,從整體上概述了apk打包的整個流程。 流程概述: 1、打包資原始檔,生成R.java檔案 2、處理aidl檔案,生成相應java

一鍵打包出多個不同包名,不同應用名稱圖示的APK

此Demo的原理與多渠道打包的原理相同(動態設定App名稱,應用圖示,替換常量,更改包名,變更渠道)最近有一個需求,就是一套程式碼要根據不同的客戶打包出不同包名,不同appName,圖示的apk,如果一個客戶更改一次打包出一個apk的話效率非常的低,並且不利於維護本demo

將JAR包反編譯,修改後重新打包

  有道是,知其然才知其所以然。有時候,我們必須讀取jar裡的打包的類。而有時還有可能要對它進行小量修改,使之適用於自己的非凡需求。前期預備   Java反編譯工具:   JGUI  http://pan.baidu.com/s/1o6xCtsQ   壓縮工具:   Winrar開始   1. 將jar包

新建專案匯入之前eclipse打包過的專案在android studio打包apk詳解

一、打包之前沒打包過的專案 1.開啟as自己想要打包專案介面,點選如下圖: 2.點選後會出現下圖:貌似和eclipse有點相同 3.應為是之前沒有打包過上面顯示button出現如下圖: 4.看到

Mac Android顯示SHA1MD5值並生成簽名檔案打包APK

導讀:這篇博文很簡單,圖文也講的也很詳細,只要你跟著我左手右手一個慢動作,右手左手慢動作操作。就能穩穩地走一波。一、首先,生成簽名檔案1.點選選單欄中的Build的。 2.彈出窗體,建立新的KeySto

安卓apk反編譯、修改、重新打包、簽名全過程

首先明確,反編譯別人apk是一件不厚道的事情。程式碼是程式設計師辛苦工作的成果,想通過這種手段不勞而獲,是不對的。這也說明,程式碼混淆是非常重要的。本文抱著學習的態度,研究在一些特殊的情況下如果有需要,該怎麼反編譯apk。 工具簡介 ,編譯和反編譯apk