一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android 篡改apk文件的可行性分析

 arm_embed 2012-07-31

Android 篡改apk文件的可行性分析

分類: Android 2449人閱讀 評(píng)論(1) 收藏 舉報(bào)

Android的.apk文件實(shí)際上就是一個(gè)zip文件 可以直接用winrar打開

如下圖所示:

包括了一個(gè)META-INF目錄

一個(gè)res目錄

一個(gè)AndroidManifest.xml

一個(gè)classes.dex

 

 

AndroidManifest.xml是每個(gè)應(yīng)用都必須定義和包含的,它描述了應(yīng)用的名字、版本、權(quán)限、引用的庫文件等等信息,如要把a(bǔ)pk上傳到Google Market上,也要對(duì)這個(gè)xml做一些配置。

  META-INF目錄

  META-INF目錄下存放的是簽名信息,用來保證apk包的完整性和系統(tǒng)的安全。在eclipse編譯生成一個(gè)apk包時(shí),會(huì)對(duì)所有要打包的文件做一個(gè)校驗(yàn)計(jì)算,并把計(jì)算結(jié)果放在META-INF目錄下。而在Android平臺(tái)上安裝apk包時(shí),應(yīng)用管理器會(huì)按照同樣的算法對(duì)包里的文件做校驗(yàn),如果校驗(yàn)結(jié)果與META-INF下的內(nèi)容不一致,系統(tǒng)就不會(huì)安裝這個(gè)apk。這就保證了apk包里的文件不能被隨意替換。比如拿到一個(gè)apk 包后,如果想要替換里面的一幅圖片,一段代碼,或一段版權(quán)信息,想直接解壓縮、替換再重新打包,基本是不可能的。如此一來就給病毒感染和惡意修改增加了難度,有助于保護(hù)系 統(tǒng)的安全。

  classes.dex文件

  classes.dex是java源碼編譯后生成的java字節(jié)碼文件。但由于Android使用的dalvik虛擬機(jī)與標(biāo)準(zhǔn)的java虛擬機(jī)是不兼容 的,dex文件與class文件相比,不論是文件結(jié)構(gòu)還是opcode都不一樣。目前常見的java反編譯工具都不能處理dex文件。

  Android模擬器中提供了一個(gè)dex文件的反編譯工具dexdump。用法為首先啟動(dòng)Android模擬器,把要查看的dex文件用adb push上傳的模擬器中,然后通過adb shell登錄,找到要查看的dex文件,執(zhí)行dexdump xxx.dex。

  目前在網(wǎng)上能找到的另一個(gè)dex文件的反編譯工具是Dedexer。Dedexer可以讀取dex格式的文件,生成一種類似于匯編語言的輸出。這種輸出與jasmin[ ]的輸出相似,但包含的是Dalvik的字節(jié)碼。我們會(huì)在下一節(jié)詳細(xì)介紹一下Dedexer。

  res 目錄

  res目錄存放資源文件。

  resources.arsc

  編譯后的二進(jìn)制資源文件。


其中dex的格式參見:http://www./android/dexformat.html

 

 

 

apk文件解壓后反編譯: 

圖片等多媒體文件:沒有編譯,無需反編譯。

 layout等二進(jìn)制xml文件:使用AXMLPrinter將其轉(zhuǎn)換為可讀的xml文件:java -jar AXMLPrinter2.jar main.xml > new_main.xml 
工具下載地址:http://code.google.com/p/android4me/downloads/list 

下圖是直接打印出來一個(gè)main.xml

要打開AndroidManifest.xml或者其他xml也同理

 

class文件反編譯: 
Android模擬器中提供了一個(gè)dex文件的反編譯工具,dexdump。用法為首先啟動(dòng)Android模擬器,把要查看的dex文件用adb push上傳的模擬器中,然后通過adb shell登錄,找到要查看的dex文件,執(zhí)行dexdump xxx.dex。 

 

然后找到上傳的要打開的dex

 

然后可以看到反匯編之后的代碼如下

目前在網(wǎng)上能找到的另一個(gè)dex文件的反編譯工具是Dedexer。Dedexer可以讀取dex格式的文件,生成一種類似于匯編語言的輸出。這種輸出與jasmin[ ]的輸出相似,但包含的是Dalvik的字節(jié)碼。 

 

 

resources.arsc這個(gè)文件我是用了

漢化浪子編寫的 AndroidResEdit 軟件 能看到里面的所有字段

直接用記事本打開大多數(shù)是亂碼

 

打開如下圖所示

 

以上就是apk文件的詳細(xì)結(jié)構(gòu)分析

apk文件如果把其中的資源文件進(jìn)行替換修改 比如進(jìn)行類似漢化操作的時(shí)候

需要重新對(duì)其簽名

 

具體的可以替換的內(nèi)容有res文件下下的資源文件

而且res下面的資源文件中的圖片等多媒體文件:沒有編譯,無需反編譯,這樣就可以很輕松地獲得一些比較好的apk應(yīng)用里的圖片,通過解碼xml文件,可以還原原來應(yīng)用的xml文件,這樣,可以獲得其界面布局文件。

 

在替換了之后,只需要使用Auto-sign工具重新對(duì)其進(jìn)行簽名即可,首先,刪掉META-INF文件夾下的簽名文件

 

 

刪除CERT.RASA  CERT.SF

只留下MANIFEST.MF文件即可

然后使用Auto-sign工具重新對(duì)其進(jìn)行簽名

 

具體的調(diào)用格式如下

  1. @ECHO OFF  
  2. Echo Auto-sign Created By Dave Da illest 1   
  3. Echo Update.zip is now being signed and will be renamed to update_signed.zip  
  4. java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip update_signed.zip  
  5. Echo Signing Complete   
  6.    
  7. Pause  
  8. EXIT  
 

重新簽名之后的apk包即可和原來的包一樣正常地安裝到手機(jī)上

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国内精品偷拍视频久久| 精品伊人久久大香线蕉综合| 在线观看免费视频你懂的 | 日韩欧美国产高清在线| 久久99爱爱视频视频| 日本熟妇五十一区二区三区| 91久久精品国产成人| 久久亚洲精品中文字幕| 亚洲视频一区二区久久久| 精品一区二区三区人妻视频| 毛片在线观看免费日韩| av中文字幕一区二区三区在线| 亚洲国产成人精品福利| 大香蕉精品视频一区二区| 青青操精品视频在线观看| 亚洲清纯一区二区三区| 亚洲一区二区三区四区性色av| 少妇一区二区三区精品| 又色又爽又无遮挡的视频| 亚洲熟女国产熟女二区三区| 高中女厕偷拍一区二区三区| 亚洲高清中文字幕一区二三区 | 欧美日韩亚洲精品在线观看| 大尺度剧情国产在线视频| 亚洲一区二区三区福利视频| 成年人免费看国产视频| 国产日本欧美特黄在线观看| 亚洲午夜福利视频在线| 亚洲国产成人爱av在线播放下载 | 99精品国产自在现线观看| 丰满少妇被猛烈撞击在线视频| 国产一区欧美一区二区| 好吊妞视频这里有精品| 亚洲中文字幕人妻系列| 亚洲午夜av久久久精品| 国产一区二区久久综合| 五月婷婷六月丁香在线观看| 手机在线观看亚洲中文字幕| 国产视频一区二区三区四区| 亚洲女同一区二区另类| 亚洲午夜福利视频在线|