關於android反組譯,似乎是沒有那麼困難?
我們來實際操作一個反組譯的工具,來試著反組譯自己的app看看。
首先,必須要先準備反組譯相關的資料,參考這裡。
其中有提到兩個必備的工具,分別是:
- 反組譯用的工具:dex2jar。
- 開啟.jar為程式碼的工具:其中有windows和MAC和Linux版本。
然後有了工具之後,就要找一個實驗體APK來實作了,為求簡單,用自己的在Google Play上面的App來實作,就決定是你了,假的危險駕駛系統。
其實這個app是為了報告的時候說放在google play上面感覺比較絢麗而來的。
好,那就開始吧。
首先我們要把app的.apk檔案抓到電腦裡面。apk檔就是整個app的主程式,我們把app編譯好之後會變成一個副檔名為apk的檔案內容,上傳google play也是將.apk檔上傳。
而至於將apk檔抓取至電腦的方法很多種,這邊我用的是超級管理器3.0,裡面有個功能是備份app到SD卡中,備份出來的檔案當然就是.apk檔哩!然後將他抓取至電腦之中。
接者我把上述提到反組譯必備的兩樣工具都解壓縮放在一起,也把剛剛抓到的apk也放在同一個資料夾,所以你應該會跟我有一樣的檔案內容:
然後會有個問題是,要把這資料夾放哪裡?等等我們會用cmd操作,所以當然是放越簡單越不容易有錯啦!在之前要記得兩件事情:
- 請打apk主檔名的空白去掉,要不等等命令下下去會出錯。
所以這裡我把原本的檔名:"impleOpenCV_v001 v1.0.apk"改成了:"SimpleOpenCV_v001.apk"。 - 路徑盡量不要有中文,雖然是沒有出錯啦,不過有時會吃不到中文,不知為何,還是要防範一下。
這裡我是把路徑放在c槽之中,令了一個資料夾叫做"apk_tool"。
這時我們要使用必備工具的第一項,就是把apk檔案轉成jar檔案。
請開啟cmd,按照一開始我們參考的連結鍵入類似的指令:
C:\>C:\apk_tool\dex2jar-0.0.9.12-a\dex2jar-0.0.9.12\dex2jar.bat C:\apk_tool\SimpleOpenCV_v001.apk
如果成功了會發現它會有類似的畫面,以下是我cmd截圖:
這時必備工具第二項就要出動了,請開啟剛剛解壓縮的"d-gui-0.3.5.windows"資料夾,會看到名字叫做"d-gui.exe"的檔案,打開他:
接著方法就變得很簡單了,請選擇開啟舊檔,選擇剛剛我們使用的jar檔案,你就會發現它會打開跟Eclipse的Package Explorer很像的內容:
以上就是參考教學網頁來的實驗成果,我想知道這些頂多也是讓你知道程式是怎麼做的,至於要怎麼破解,也許有有興趣可以自己試試看。
不過我們的立場還是要尊重智慧柴產權,畢竟使用破解的免費app,製作者的動機已經是別有居心了,說不定有木馬或是惡意程式等等,使用者必須要小心;而我們開發者也應該要避免瓜田李下,請不要隨意拿別人的app copy來獲利呀。
以下有個反破解的方法,也是從教學網頁來著的,他是這麼說的:
反反編譯:Google 在 2.3 以上版本有提供防止被反編譯的方法即在 Android 專案目錄內的 default.properties 檔案中加上一行 proguard.config=proguard.cfg編譯出來的 APK 靠以上方法就無法得到人眼看得懂的程式碼了。不過反過來說,某個 APK 只要能夠被 Android 2.2.X 以下版本安裝,也同時表示它一定是可以被反編譯的~。
那我們來試試看,剛剛好同樣的app我也有編輯檔案(廢話自己寫的。)
但是放在google play上面要等n個小時才會生效,於是我們用自己編譯的檔案試試看:
裝好了一後我們一樣從超級管理器這個app中抓出來檔案,修改檔名,鍵入指令。
會得到一個相同的畫面,接著緊張的時刻來了,我們要把.jar檔案開啟啦!
恩,結論是會少了一個android-support-v4.jar("support.v4")和"annanotation"這個package,其他都是一樣的,如上圖。
而關於反反組譯,可能是檔案必須要上傳到google play才會生效?
關於少了兩個package的內容,我想不是"proguard.config=proguard.cfg"命令的關係,因為我剛剛再跑一次反組譯,使用debug的編譯,然後解除"proguard.config=proguard.cfg"的命令,結果還是少了兩個package,我以應該是跟google play上傳後的內容有關。
總之等報告完找機會來試試看吧。
話說今天實驗的這個app是為了報告做的,請大家不要隨意下載呀~~
以上,先這樣。
2013/05/11更新:
在mac上面反組譯的方法更簡單了,
首先把要先下載dex2jar和JD-GUI這兩個工具,注意要是for mac的喔!
然後也是一樣,下載apk檔案。
- 開啟終端機。
- 遵循mac拖拉方法,先把dex2jar解壓縮過後檔案夾之中,dex2jar.sh拖拉到終端機裡面。
- 按下一次空白鍵。
- 再把要反組譯的apk檔案拖拉到終端機中。
- 會得到一串命令。按下enter。
- 就好啦!!你會得到一個jar檔案在與apk相同目錄的資料夾。
之後使用JD-GUI的方法跟windows一樣哩。
沒有留言:
張貼留言
你好,我是小書,如果文章內容有錯誤,或是看到有建議以及任何感想時,歡迎提出分享,我們一起學習一起努力。