半年前換電話看過這篇,半年後更新Android 10又回來看這篇,卻還是解決不了,這次我決定直接把apk拆開來看
一開始已經直接放棄從試用入手,而是直接向斷網注冊下刀,因為感覺上做無限試用比斷網注冊更難,結果是沒錯的
從舊版1.18到1.31,都是用同一個方式做驗証的,更新的版本還不知道,不過直到1.31這個辦法還是有效的
首先,你要準備手機的IMEI,如無意外的話應該是15位,在後面補一個0使他變成16位
然後,準備一條16位的序號,隨便就好,這裡我用5555555555666666為例
斷網注冊方式最重要的一步,是app如何得知你輸入的序號,對應的驗証碼是甚麼,當中肯定經過了一些計算/加密
我把1.18的apk拆成.class後,再打開Main class的Main method,當中發現
這一句代碼。
而這一句代碼告訴我,IMEI跟序號都必須是16位,以及驗証碼跟Q9Util.genRegCode產生出來的一樣,才會繼續執行,這代表Q9Util.genRegCode中應該進行了一番操作,才得出一條驗証碼,於是我又鑽進去Q9Util裡
如果你好奇的話這是Q9Util的內容
https://pastebin.com/vaUwujHA
從這裡發現,Q9Util中只有一個method,當中並沒有包含任何加密,只是進行了一堆運算
於是我把代碼丟進Java compiler,再用上面已補0的IMEI,以及隨便一條序號放進去運行,就得出一個16位數字
可幸的是,1.18跟1.31的驗証方式並沒改變,所以1.18生成出來的驗証碼也可以放進1.31裡
這個時候,你把上面16位的數字放進去斷網驗証,就成功了
在這個地方,要注意的是,如果你是在Android 10的話,你的用戶編號(即手機IMEI補一個0)會變成0200000000000000,這時候只要使用以下的序號跟驗証碼,就能驗証成功
序號: 5555555555666666
驗証碼: 6320996151882888
可能因為app無法讀取到手機的IMEI(1.31都好幾年前了,Android版本都過了好幾個),所以直接用了預設
如果是在Android 10以下的,你需要使用以下辦法
- 進入上面連結
*- 把genRegCode複製到Java compiler
- 把已補0的IMEI跟序號放進去代碼中
- 執行該代碼
就能得出一個驗証碼,如果輸入了還是不行的就嘗試把兩個數字互換
如果代碼無法執行,可能是上面連結的代碼有問題,那可能需要先將apk轉成jar(搜尋dex2jar,網上有使用教學),再將jar檔丟進去Java decompiler online(個人使用這個http://www.javadecompilers.com/,用不同decompiler提取Q9Util,直到有一個genRegCode能用為止(好像只有1-2個可以)
然後再由*號開始嘗試
結果,Android 10, 1.31版九方
這支帳號是特地為了發這篇文才開的,希望能夠幫助有需要的人
|