Android反編譯方法(class+xml)


ps:對於軟件開發人員來說,保護代碼安全也是比較重要的因素之一,不過目前來說Google Android平台選擇了Java Dalvik 
VM的方式使其程序很容易破解和被修改,首先APK文件其實就是一個MIME為ZIP的壓縮包,我們修改ZIP后綴名方式可以看到內部的文件結構,類似Sun 
JavaMe的Jar壓縮格式一樣,不過比較去別的是Android上的二進制代碼被編譯成為Dex的字節碼,所有的Java文件最終會編譯進該文件中去,作為托管代碼既然虛擬機可以識別,那么我們就可以很輕松的反編譯。所有的類調用、涉及到的方法都在里面體現到,至於邏輯的執行可以通過實時調試的方法來查看,當然這需要借助一些我們自己編寫的跟蹤程序。Google最然在Android 
Market上設置了權限保護app-private文件夾的安全,但是最終我們使用修改定值的系統仍然可以獲取到需要的文件。

 

    總結反編譯主要的目的在於學習。利用反編譯進行相關的漢化或修改,還是盡量不要吧,畢竟人家寫個程序不容易啊!

 

具體方法如下:

 

  一:所需工具(點擊各自連接進入下載頁面):

 

AXMLPrinter2.jar

 

dex2jar:

 

查看Jar包的GUI工具

 

二,開始行動

 

1.用AXMLPrinter2.jar查看apk中的布局xml文件:

 

將apk文件(為了方便起見放到tools目錄里)用WinRAR等工具打開,將res/layout/main.xml解壓出來(也還是放在tools目錄里哦)

 

打開main.xml文件,內容如下(一堆天文):

 

 

這時候AXMLPrinter2.jar派上用場了,打開cmd終端,一直進入到tools目錄下,輸入如下命令:

 

java -jar AXMLPrinter2.jar main.xml > 
main.txt.
 (如下圖所示)

 

 

打開main.txt代碼如下:

 

 



  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"   

  4.     android:orientation="1"   
  5.     android:layout_width="-1"   
  6.     android:layout_height="-1"   
  7.     >   
  8.     <WebView   
  9.         android:id="@7F050000"   
  10.         android:layout_width="-1"   
  11.         android:layout_height="-2"   
  12.         >   
  13.     </WebView>   
  14. </LinearLayout>

 

 

 

為了比對打開源程序中的main.xml代碼如下(大家比對一下吧):

 

 



  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   

  3.     android:orientation="vertical"   
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="fill_parent"   
  6.     >   
  7. <WebView   
  8.     android:id="@+id/apk_web"   
  9.     android:layout_height="wrap_content"   
  10.     android:layout_width="fill_parent"   
  11.        
  12. />   
  13. </LinearLayout>  

 

 

 

2:通過dex2jar工具進行反編譯。

 

把apk中的class.dex拷貝到dex2jar.bat所在目錄。運行dex2jar.bat  
class.dex,將會在其文件夾下生成classes.dex.dex2jar.jar。

 

 

 

 

3、可以將jar文件重新命名后拷貝到GUI文件夾下,運行JD-GUI工具(它是綠色無須安裝的),打開上面的jar文件,即可看到源代碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM