av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Android程序反編譯的方法

Apk文件的格式 Android application package文件。每個要安裝到android平臺的應用都要被編譯打包為一個單獨的文件,后綴名為.apk,其中包含了應用的二進制代碼、資源、配置文件等。

龍城網站建設公司創(chuàng)新互聯建站,龍城網站設計制作,有大型網站制作公司豐富經驗。已為龍城上千多家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的龍城做網站的公司定做!

apk文件實際是一個zip壓縮包,可以通過解壓縮工具解開。可以用zip解開*.apk文件,下面是一個helloword的apk示例文件

 
 
 
  1. |– AndroidManifest.xml   
  2. |– META-INF   
  3. | |– CERT.RSA   
  4. | |– CERT.SF   
  5. | `– MANIFEST.MF   
  6. |– classes.dex   
  7. |– res   
  8. | |– drawable   
  9. | | `– icon.png   
  10. | `– layout   
  11. | `– main.xml   
  12. `– resources.arsc   

1 Manifest文件:AndroidManifest.xml是每個應用都必須定義和包含的,它描述了應用的名字、版本、權限、引用的庫文件等等信息[ , ],如要把apk上傳到Google Market上,也要對這個xml做一些配置。注意:在apk中的xml文件是經過壓縮的,不可以直接打開。

2 Res文件:res文件夾下為所有的資源文件。

3 resources.arsc文件:為編譯后的二進制資源文件,許多做漢化軟件的人都是修改該文件內的資源以實現軟件的漢化的。

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

5 classes.dex是java源碼編譯后生成的java字節(jié)碼文件。但由于Android使用的dalvik虛擬機與標準的java虛擬機是不兼容的,dex文件與class文件相比,不論是文件結構還是opcode都不一樣。

XML文件的反編譯

在apk中的xml文件是經過壓縮的,可以通過AXMLPrinter2工具解開,具體命令為:

 
 
 
  1. java -jar AXMLPrinter2.jar AndroidManifest.xml   
  2. HelloAndroid程序中Manifest文件的實例:   
  3.    
  4.     android:versionCode="1"   
  5.     android:versionName="1.0"   
  6.     package="name.feisky.android.test"   
  7.     >   
  8.     
  9.         android:label="@7F040001"   
  10.         android:icon="@7F020000"   
  11.         >   
  12.         
  13.             android:label="@7F040001"   
  14.             android:name=".HelloAndroid"   
  15.             >   
  16.             
  17.                >   
  18.                
  19.                     >   
  20.                    
  21.                 
  22.  
  23.                     >   
  24.                    
  25.                
  26.            
  27.        
  28.     
  29.         android:minSdkVersion="6"   
  30.         >   
  31.        
  32.   
 
 
 
  1. 而原文件為:   
  2.    
  3. package="name.feisky.android.test"   
  4. android:versionCode="1"   
  5. android:versionName="1.0">   
  6.    
  7. android:label="@string/app_name">   
  8.    
  9.    
  10.    
  11.    
  12.    
  13.    
  14.    
  15.    

#p#

classes.dex文件反編譯

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

Android模擬器中提供了一個dex文件的反編譯工具,dexdump。用法為首先啟動Android模擬器,把要查看的dex文件用adb push上傳的模擬器中,然后通過adb shell登錄,找到要查看的dex文件,執(zhí)行dexdump xxx.dex。但是這樣得到的結果,其可讀性是極差的。下面介紹一個可讀性比較好的工具。

工具準備:

1、把dex文件反編譯為jar文件的工具。(dex2jar)

2、把jar反編譯為java的工具。(JD-GUI)

反編譯的步驟

1、從APK中提取classes.dex文件,對APK文件解壓即可得到。 將其放到dex2jar的目錄下,打開cmd,運行dex2jar.bat classes.dex,生成classes.dex.dex2jar.jar。

2、運行JD-GUI工具,打開上面的jar文件,即可看到源代碼。

 
 
 
  1. HelloAndroid實例:  
  2. package name.feisky.android.test;   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. public class HelloAndroid extends Activity   
  6. {   
  7. public void onCreate(Bundle paramBundle)   
  8. {   
  9. super.onCreate(paramBundle);   
  10. setContentView(2130903040);   
  11. }   
  12. }  

其原程序為:

 
 
 
  1. package name.feisky.android.test;   
  2. import android.app.Activity;   
  3. import android.os.Bundle;   
  4. public class HelloAndroid extends Activity {   
  5. /** Called when the activity is first created. */   
  6. @Override   
  7. public void onCreate(Bundle savedInstanceState) {   
  8. super.onCreate(savedInstanceState);   
  9. setContentView(R.layout.main);   
  10. }   

【編輯推薦】

Android布局屬性詳解

Android環(huán)境變量的設置

Android 多任務多線程斷點下載

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


新聞名稱:Android程序反編譯的方法
標題網址:http://uogjgqi.cn/article/djhohpd.html
掃二維碼與項目經理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流