2012年2月9日星期四

android編譯和反編譯他人的項目來學習

android編譯和反編譯他人的項目來學習
  androandroid台灣中文網id基于java的,而java反編譯工具很強悍,所以對正常apk應用程序基本上可以做到100%反編譯還原。

  因此開發人員如果不准備開源自己的項目就需要知道怎樣防止反編譯和反編譯他人的項目來學習。

  2。3版本以上在eclipse自動生成的default。properties文件中加上一句“proguard。config=proguard。cfg”android教學可以對代碼進行混淆,反android forum中文討論區編譯後是很難看懂的。

  2。3之前的SDK版本也沒關系,把上面的proguard。cfg文件複制一份放到項目中,然後進行相同的操作即可。

  有些應用android 中文反編譯後java代碼用jd-ui根本都無法打開,連混淆的代碼都看android market 軟體商城不到的,本人嘗試多次都做不到,希望知道的告知下怎麽處理的。

  注意:上面的功能只是把java代碼混淆了,xml和資源文件、圖片並沒有混淆,有些遊戲應用圖片比較重要需要轉換成dat文件 再加上自己的加密解密算法還原。

  另android軟體論壇外加了混淆功能後還有壓縮的功能,混淆後的apk比原來的小(具體比例看你的代碼重複量了)

  說完防止反編譯再來說說怎麽反編譯吧

  先說一下反編譯的流程和原理:

  1。用apktool 把apk--> 資源包(java代碼變成smali文件看不懂的),可以修改資源包裏面的文件。

  2。apk後綴名改成zip或rar解壓,獲取 classes。dex 文件,用dex2jar轉換成jar包(注:直接解壓出來的資源文件是不能直接打開的,要用第一步的反編譯工具)。

  3。用jd-ui等java反編譯工具直接查看java代碼。

  4。把java代碼和第一版的資源包整到一起重新組成一個新的應用。

  5。用apktool 重新編譯。

  6。用簽名工具重新簽名。

  7。重新發布帶新的簽名的應用。

  注:如果不用改java代碼,只是換換風格和漢化2。3。4步則不用做。

  google code上的開源項目

  apktool http://code。google。com/p/android-apktool/

  dex2jar http://code。google。com/p/dex2jar/

  另外有人做了個工具套裝,集成了apktool dex2jar jd-ui,不過我下載了運行不了 不知道是不是相應環境沒有配對導致的

  hackapk http://code。google。com/p/hackapk/

  另外有人把apktool做了個封裝 弄成exe文件 圖形界面的方便使用,截個圖出來給大家看看吧

  注:上面那個軟件不能簽名的,要用另外一個軟件(APKSign)來進行簽名,截圖如下:

  另給出上面兩個工具的下載連接 機鋒論壇上面的,估計直接點擊連接下載不了

  Xwindows,帶圖形界面: apktool。rar (3。33 MB) -->這個下載後可以自己到 http://code。google。com/p/android-apktool/ 下載最新版的apktool。jar替換原來的。

  簽名工具:Auto-sign。rar(312。45 KB)

  另外還有些命令行的工具,本人給APK編輯器不同版本上面的說明不對應浪費了很多時間

  1。普通apk文件(就是從各種網站上下載下來的第三方軟件)

  (1)把他放到place-apk-here-for-modding文件夾裏面。(不要有空格和中文,中android論壇文的改成英文的)

  (2)打開Script。exe,在CMD窗口中輸入22或23(設置目前的工程),android遊戲論壇選擇要編輯的apk文件的編號,回車確認

  如上:有些版本設置目前的工程選項改成23了,但說明文件沒有改過來,按22一直都無法選擇apk,原因很不好找。

建議還是使用圖形界面。

没有评论:

发表评论