編輯:初級開發
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代碼如下:
< ?XML version="1.0" encoding="utf-8"?>
< LinearLayout
XMLns:android=http://schemas.android.com/apk/res/android
android:orIEntation="1"
android:layout_width="-1"
android:layout_height="-1"
>
< WebVIEw
android:id="@7F050000"
android:layout_width="-1"
android:layout_height="-2"
>
< /WebVIEw>
< /LinearLayout>
為了比對打開源程序中的main.XML代碼如下(大家比對一下吧):
< ?XML version="1.0" encoding="utf-8"?>
< LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"
android:orIEntation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
< WebVIEw
android:id="@+id/apk_web"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
< /LinearLayout>
2:通過dex2jar工具進行反編譯。
把apk中的class.dex拷貝到dex2jar.bat所在目錄。運行dex2jar.bat class.dex,將會在其文件夾下生成classes.dex.dex2jar.jar。
3、可以將jar文件重新命名後拷貝到GUI文件夾下,運行JD-GUI工具(它是綠色無須安裝的),打開上面的jar文件,即可看到源代碼。
android系統中采用PULL技術解析XML文檔比用SAX技術性能要好得多。建議android的開發者采用PULL技術解析XML文檔。跟SAX類似,只不過PULL技
以Windows平台的SDK為例,這裡Android開發網的模擬器配置路徑為 C:\Users\Administrator\.android\avd\2.3.3.avd
Android的服務開發中我們可能都是Activity和Service同進程處理,但想象過系統提供的各種ServiceManager嗎? 比如 SensorManage
網上關於獲取未安裝的APK圖標的文章滿天飛,但都是轉帖,運行後的效果卻是獲取到android的默認小機器人圖標.那個暴寒....現提供解決方法如下,廢話不說,上效果圖,