成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

反編譯Android部署程序

移動開發(fā) Android
因?yàn)閷W(xué)習(xí)Android編程的需要,我們有的時候要對網(wǎng)絡(luò)上發(fā)布的項(xiàng)目進(jìn)行學(xué)習(xí),可是Android程序一般是通過apk發(fā)布的,我們看不到源代碼,嘿嘿,辦法總會有的,而且還不止一個

方法一: apk—>dexàjaràjava (推薦)

1.下載dex2jar,下載地址(見附件):

http://code.google.com/p/dex2jar/downloads/list

2.下載class反編譯工具jad,

下載地址(見附件):

http://www.119.xdowns.com/uploadFile/2010-8/jd-gui-0.3.3.osx.i686.zip 3.使用winrar解壓縮.apk文件.我們可以看到classes.dex文件。這個就是Android虛擬機(jī)Dalvik支持的字節(jié)碼文件。

4.在cmd下進(jìn)入dex2jar.bat所在路徑,輸入dex2jar.bat D:\project\classes.dex 回車。其中D:\project\classes.dex就是你的classes.dex所在的目錄。

5.然后在classes.dex同級目錄下會生成一個classes.dex.dex2jar.jar文件

6.用jad工具將打開這個jar文件,你就可以看到這個jar文件里面的代碼了。而且可以直接保存為java文件。

方法二:(推薦)

Apk->加密的XML->解密的XML

apk—>dexàsmali

 此外,上面操作只能得到j(luò)ava代碼,但是我們可能還需要一些XML文件,APK文件解壓縮后,發(fā)現(xiàn)其中的XML文件都是經(jīng)過處理過的,看不到源碼。

下面利用Google提供的apktool來獲取xml文件

1. 下載apktool,可以去Google的官方下載(見附件),

地址:http://code.google.com/p/android-apktool/

apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。

2.解壓這兩個下載到的文件到某個文件夾(例如E盤根目錄)。 確保解壓縮后得到的aapt.exe,apktool.bat,apktool.jar在同一個文件夾下。

3.將要破解的.apk文件也放入到這個文件夾中來

4.運(yùn)行CMD,用cd命令轉(zhuǎn)到這幾個文件所在文件夾,輸入apktool,假如列出一些幫助的話就成功了(解釋d為加壓 ***個路徑為你的apk所在的位置。第二個是要輸出的位置)
apktool d XXX.apk ABC 反編譯XXX.apk到文件夾ABC (必須確保當(dāng)前目錄下沒有ABC這個文件夾,否則會報(bào)錯)

5. 解壓后的文件夾中可以得到apk中的xml配置文件。

其實(shí)用這個方法會得到一個smali文件夾,進(jìn)去看,用記事本打開其中的一個.smali文件,通過解讀里面的信息,就可以一窺代碼的全貌,就是有點(diǎn)費(fèi)力。下面我們通過一個實(shí)例來對比一下.smali和.java源代碼的對照吧:

#p#

ApkInstaller.smali文件:

 

  1. .class public Lcom/tutor/apkinstaller/ApkInstaller;    
  2. .super Landroid/app/Activity;    
  3. .source "ApkInstaller.java"    
  4. # instance fields    
  5. .field private apkWeb:Landroid/webkit/WebView;    
  6. # direct methods    
  7. .method public constructor <init>()V    
  8.     .registers 1    
  9.     .prologue    
  10.     .line 8    
  11.     invoke-direct {p0}, Landroid/app/Activity;-><init>()V    
  12.     return-void    
  13. .end method    
  14. # virtual methods    
  15. .method public onCreate(Landroid/os/Bundle;)V    
  16.     .registers 5    
  17.     .parameter "savedInstanceState"    
  18.     .prologue    
  19.     .line 13    
  20.     invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V    
  21.     .line 14    
  22.     const/high16 v2, 0x7f03    
  23.     invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V    
  24.     .line 15    
  25.     const/high16 v2, 0x7f05    
  26.     invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;    
  27.     move-result-object v2    
  28.     check-cast v2, Landroid/webkit/WebView;    
  29.     iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;    
  30.     .line 16    
  31.     iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;    
  32.     invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;    
  33.     move-result-object v1    
  34.     .line 17    
  35.     .local v1, webSettings:Landroid/webkit/WebSettings;    
  36.     const/4 v2, 0x1    
  37.     invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V    
  38.     .line 19    
  39.     const-string v0, "http://frankiewei.net/apk/demos/main/index.html#home"    
  40.     .line 20    
  41.     .local v0, apkUrl:Ljava/lang/String;    
  42.     iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;    
  43.     invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V    
  44.     .line 21    
  45.     return-void    
  46. .end method   

 

ApkInstaller.java的源代碼如下

 

  1. package com.tutor.apkinstaller;    
  2. import android.app.Activity;    
  3. import android.os.Bundle;    
  4. import android.webkit.WebSettings;    
  5. import android.webkit.WebView;    
  6. public class ApkInstaller extends Activity {    
  7.     private WebView apkWeb;    
  8.     @Override    
  9.     public void onCreate(Bundle savedInstanceState) {    
  10.         super.onCreate(savedInstanceState);    
  11.         setContentView(R.layout.main);    
  12.        apkWeb = (WebView)findViewById(R.id.apk_web);    
  13.        WebSettings webSettings = apkWeb.getSettings();    
  14.        webSettings.setJavaScriptEnabled(true);    
  15.        String apkUrl = "http://frankiewei.net/apk/demos/main/index.html#home";  
  16.        apkWeb.loadUrl(apkUrl);    
  17.     }    
  18. }   

通過兩者的對比是不是有所感悟呢,的確有點(diǎn)麻煩。所以推薦大家采用方法一來得到j(luò)ava代碼,用方法二來獲取xml文件。這樣就可以獲取整個工程的代碼了。

但有的時候方法一可能會出錯,筆者就曾經(jīng)遇到過這種情況,這個時候只能用方法二了。

此外介紹另外一種方式,這個方式得到的代碼還不如方法二清晰,但是還是介紹一下吧。


方法三:apk—>dex->ddx

ddx文件雖然不能看到源代碼,但是可以看出類的結(jié)構(gòu)。有的時候用***種方法可能不一定能得到源代碼,這個時候就用第二種方法來補(bǔ)救吧...

Dedexer 項(xiàng)目主頁(見附件): http://dedexer.sourceforge.net/

下載地址也在這個網(wǎng)站上。下載后的文件為ddx1.11.jar(目前***版本為1.11)

1. 運(yùn)行CMD 進(jìn)入ddx1.11.jar的目錄,輸入如下命令: D:\WINDOWS\system32>java -jar ddx1.11.jar

2. 出現(xiàn)如下提示

Usage: java -jar ddx.jar -o -D -r -d <destination> <source>

<destination> :指定生成的文件放置的目錄

<source> :dex源文件.

-D - 指定生成錯誤信息.

-o - 指定生成日志文件(dex.log).

3.仔細(xì)閱讀上面的信息,根據(jù):

  1. java -jar ddx1.11.jar -o -D -r -d <destination> <source> 

按此提示,輸入:

  1. java -jar ddx1.11.jar -o -D -r -d c:\dex\gen c:\dex\classes.dex 4. 

運(yùn)行成功,在gen 目錄生成了ddx 文件.用文本編輯器打開,可看到類大致結(jié)構(gòu).

原作者的blog中還有相關(guān)工具可供下載.原地址:http://zhaojun1717.javaeye.com/blog/953281

【編輯推薦】

Android程序反編譯的方法

Android開發(fā)之旅 環(huán)境搭建

Android 多任務(wù)多線程斷點(diǎn)下載

Android開發(fā)之旅:Android架構(gòu)

責(zé)任編輯:zhaolei 來源: 網(wǎng)易博客
相關(guān)推薦

2011-05-31 14:18:17

2015-01-15 11:01:43

2011-05-31 14:52:13

Android 反編譯 方法

2011-04-20 10:32:44

java反編譯

2015-01-15 10:15:16

Android反編譯-smail語法

2015-07-13 15:52:18

反編譯Android APK

2018-05-11 10:16:41

微信小程序反編譯

2017-11-27 15:43:49

Androidjadx反編譯

2018-05-11 10:22:05

小程序源碼分析

2021-03-07 16:31:35

Java編譯反編譯

2017-02-20 13:54:14

Java代碼編譯

2015-08-07 11:11:15

反編譯源代碼Mac

2017-07-13 13:13:49

AndroidAPK反編譯

2025-06-17 07:35:27

Spring程序jadx

2009-06-11 14:11:33

代碼混淆Java反編譯

2025-06-17 09:31:24

2012-11-06 10:02:04

JavaJadEclipse

2014-09-25 10:28:02

反編譯工具Java

2009-06-11 13:49:30

2024-05-22 09:36:42

開源NET
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩免费网站 | 欧美一二三 | 精品国产欧美日韩不卡在线观看 | 日韩电影中文字幕在线观看 | 国产激情一区二区三区 | 国产精品精品视频 | 欧美日韩亚洲二区 | 日本三级线观看 视频 | 日本超碰| 亚洲三区在线播放 | 成人精品一区二区三区四区 | 国产伦精品一区二区三区精品视频 | 国产精品成人在线 | 蜜桃av鲁一鲁一鲁一鲁 | 欧美精品一区二区在线观看 | 综合久久99 | 国产乱码久久久久久一区二区 | 成年人网站免费视频 | 2019天天干天天操 | 欧美a级成人淫片免费看 | 国产一级一级毛片 | 亚洲一区二区三区高清 | 久久九七| 日韩在线视频免费观看 | 久久久成人动漫 | 中文字幕黄色大片 | 国产精品美女久久久久aⅴ国产馆 | 一级片片| 7777久久 | 中文成人在线 | 中文字幕av在线 | 久草视| 看片国产 | 国产色黄| 精品中文在线 | 少妇午夜一级艳片欧美精品 | 久久机热 | 成人欧美一区二区三区在线播放 | 五月综合激情婷婷 | 日韩一级欧美一级 | 成人欧美日韩一区二区三区 |