91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何反編譯Android部署程序

發布時間:2021-11-22 14:15:08 來源:億速云 閱讀:178 作者:小新 欄目:移動開發

這篇文章主要為大家展示了“如何反編譯Android部署程序”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何反編譯Android部署程序”這篇文章吧。

方法一: 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虛擬機Dalvik支持的字節碼文件。

4.在cmd下進入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

此外,上面操作只能得到java代碼,但是我們可能還需要一些XML文件,APK文件解壓縮后,發現其中的XML文件都是經過處理過的,看不到源碼。

下面利用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.運行CMD,用cd命令轉到這幾個文件所在文件夾,輸入apktool,假如列出一些幫助的話就成功了(解釋d為加壓 ***個路徑為你的apk所在的位置。第二個是要輸出的位置)
apktool d XXX.apk ABC 反編譯XXX.apk到文件夾ABC (必須確保當前目錄下沒有ABC這個文件夾,否則會報錯)

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

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

ApkInstaller.smali文件:

.class public Lcom/tutor/apkinstaller/ApkInstaller;    .super Landroid/app/Activity;    .source "ApkInstaller.java"    # instance fields    .field private apkWeb:Landroid/webkit/WebView;    # direct methods    .method public constructor <init>()V        .registers 1        .prologue        .line 8        invoke-direct {p0}, Landroid/app/Activity;-><init>()V        return-void    .end method    # virtual methods    .method public onCreate(Landroid/os/Bundle;)V        .registers 5        .parameter "savedInstanceState"        .prologue        .line 13        invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V        .line 14        const/high26 v2, 0x7f03        invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V        .line 15        const/high26 v2, 0x7f05        invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;        move-result-object v2        check-cast v2, Landroid/webkit/WebView;        iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;        .line 16        iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;        invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;        move-result-object v1        .line 17        .local v1, webSettings:Landroid/webkit/WebSettings;        const/4 v2, 0x1        invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V        .line 19        const-string v0, "http://frankiewei.net/apk/demos/main/index.html#home"        .line 20        .local v0, apkUrl:Ljava/lang/String;        iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;        invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V        .line 21        return-void    .end method

ApkInstaller.java的源代碼如下: 

package com.tutor.apkinstaller;    import android.app.Activity;    import android.os.Bundle;    import android.webkit.WebSettings;    import android.webkit.WebView;    public class ApkInstaller extends Activity {        private WebView apkWeb;        @Override        public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.main);           apkWeb = (WebView)findViewById(R.id.apk_web);           WebSettings webSettings = apkWeb.getSettings();           webSettings.setJavaScriptEnabled(true);           String apkUrl = "http://frankiewei.net/apk/demos/main/index.html#home";         apkWeb.loadUrl(apkUrl);        }    }

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

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

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


方法三:apk&mdash;>dex->ddx

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

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

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

1. 運行CMD 進入ddx1.11.jar的目錄,輸入如下命令: D:\WINDOWS\system32>java -jar ddx1.11.jar

2. 出現如下提示

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

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

<source> :dex源文件.

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

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

3.仔細閱讀上面的信息,根據:

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

按此提示,輸入:

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

運行成功,在gen 目錄生成了ddx 文件.用文本編輯器打開,可看到類大致結構.

以上是“如何反編譯Android部署程序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

榆林市| 瑞安市| 桑日县| 华坪县| 格尔木市| 拉萨市| 苏尼特左旗| 井陉县| 连城县| 公安县| 海原县| 杭锦后旗| 盐源县| 沐川县| 临安市| 陈巴尔虎旗| 庆云县| 西贡区| 靖西县| 长兴县| 石阡县| 日照市| 阳原县| 柳江县| 甘孜| 鄂伦春自治旗| 名山县| 依安县| 正蓝旗| 涟源市| 尼玛县| 台湾省| 秦皇岛市| 呼伦贝尔市| 郸城县| 临湘市| 桑日县| 柞水县| 遂平县| 富裕县| 西充县|