google code pretty

2016-10-06

自己的網易雲音樂 App 自己破解 (未完成)

網易雲音樂音樂齊全又跨平台又好用,但因為版權上問題,會導致海外用戶無法使用,造成有些歌曲會呈現灰色無法點擊播放情形
常見的修改 /etc/hosts 的方法已經失效了,在 android 手機上不想 root 又不想裝來路不明的 APK 時只好自己研究破解方法,同時學習學習逆向工程

Try 1:自己反編譯 APK,找到區分海外用戶的地方修改它,再編回 APK 安裝在手機上

常見的反編譯工具有 apktool、jd-gui、dex2jar、jadx
這邊用了 jadx online 把 apk 檔反編譯回原始碼,再用 Eclipse 看 code
用 apktool 編譯 & 反編譯 APK 檔
用 jd-gui 看 APK 檔的原始碼 (但好像沒有 jadx 反編譯的好看)

從 Unlock163Music blog 看到「客戶端是使用 music.163.com 這個域名訪問 80 port web服務的,而國內云平台會攔截未備案域名的 web 請求。但是,直接通過 IP 訪問 web 服務(即 HTTP 頭中,Host的值為服務器IP)時,不會被攔截」

從這裡想到是不是可以從 APK 中把用 Domain Name 連線的部分改成直接連網易雲音樂的 IP,這樣是不是就可以繞開攔截了?

先把 APK 檔丟到 jaxd online 上反編譯回原始碼,然後用 Eclipse 搜尋到跟 "music.163.com" 有關的檔案路徑在 /res/values/arrays.xml,其中的 autoDomainChangeText 項目

再使用 apktool 反編譯 APK 檔
apktool d CloudMusic.apk
執行完後,會生成一個跟 APK 黨相同名稱的資料夾,裡面就是反編譯出來的東西,要修改的路徑在 apk_decompile_path/res/values/arrays.xml,然後把他改成這樣


最後再用 apktool 編譯回 APK 檔,
apktool d CloudMusic.apk
最後因為 APK 沒有被 sign 過不能安裝,所以得替他加上 sign
先產生 keystore
keytool -genkey -alias xxx -keyalg RSA -keystore .keystore

sign apk
jarsigner -verbose -digestalg SHA1 -keystore ~/.keystore APK_Name.apk chelsea(KEY_ALIAS 別名)
最後就是丟到手機上安裝,可惜在手機上雖然安裝成功了,但是不能執行,在初始畫面就卡住了,像是這樣,連登入都不給登入 T_T

失敗的不確定是不是 APK 本身有反逆向功能的 integrity check,還得想辦法挖出 log 來看看才行,革命尚未成功同志仍須努力,看來事情不是憨人想的那麼容易啊~



Ref:
key store 別名查詢
http://hklifenote.blogspot.tw/2015/06/android-keystorekey-alias.html

keytool 指令整理
http://note-whu.rhcloud.com/2015/09/28/keytool%E6%8C%87%E4%BB%A4%E6%95%B4%E7%90%86/

jadx online decompiler
http://www.javadecompilers.com/apk

人人都會的 APK 反編譯
http://huli.logdown.com/posts/661513-android-apk-decompile

163-music-unlock
https://blog.chionlab.moe/2016/04/06/163-music-unlock-update-log/
https://github.com/YiuChoi/Unlock163Music

《免責聲明》
一. 所有軟體皆由網路蒐集轉載測試,不承擔任何技術及版權等等問題。 
二. 所有資訊作為測試用途,請於24小時內刪除,請購買正版,並且尊重智慧財產權。
三. 請於下載完後24小時以內將檔案刪除,請勿作商業上之用途。
四. 軟體若有侵權,請立即告知,本人將立刻做出刪除之動作。