標籤:android style blog http os io 檔案 ar
<捕魚達人3> 剛出來不久,就被鬼哥Dump出來dex,隨之破解也就輕而易舉。一開始我用ZjDroid神器實驗過,但是沒Dump成功一直耿耿於懷,終於有一天逆襲 不僅提取出來了smali檔案,繼而修複 更是在破解的時候 另闢蹊徑,不彈支付介面亦可破解了還支援離線模式。就記錄一下。
程式是從移動MM商城下載的。
一、脫殼。
這個殼的關鍵詞是 chaosvmp,據說是看雪一位版主所在的公司開發的。在手機上安裝好程式並運行,依據教程,脫殼的步驟是:
1、開啟命令列 輸入查看 LogCat :
adb shell logcat -s zjdroid-shell-org.cocos2d.fishingjoy3
如所示:
記下hook的pid=13108
2、再開啟一個命令列 用來向手機發送執行命令。首先要在 adb shell 擷取APK當前載入DEX檔案的資訊 輸入命令:
am broadcast -a com.zjdroid.invoke --ei target 13108 --es cmd‘{"action":"dump_dexinfo"}‘
,會出現兩個路徑,第一次Dump可能不知道應該用哪一個,我用的是apk尾碼的。我的看法是如果路徑中有**.classes.dex 路徑,則優先選擇;否則可以試試apk尾碼的路徑。那我們開始dump dex:
am broadcast -a com.zjdroid.invoke --ei target 13108 --es cmd‘{"action":"backsmali","dexpath":"/data/app/org.cocos2d.fishingjoy3-1.apk"}‘
運行幾分鐘,提示無錯誤dumpdex完成。
到指定的檔案夾查看dex檔案,大小卻為0位元組是不是就說明我們dump失敗了呢?其實/file/smali 是可以提出來完全可以用的。
二、修複。
上面已經提取出來smali檔案了 用IDE反編譯原程式,將smali檔案替換為dump出來的看能否編譯成功。果然出錯如,
試著修複一下,找到報錯的地方:
將這兩行刪除,同樣修複接下來的報錯提示。然後就能編譯成功了。
安裝試試能不能正常開啟,果然秒退o(╯□╰)o
咦 這到底是為什麼尼?我們是把殼脫了 猜想,是不是程式運行時 仍然調用了與殼有關的代碼導致了閃退?終於不負有心人在AndroidManifest.xml檔案中 看到了:
果斷將 Application 的name 屬性刪除。然後完美修複完成。
三、破解。
按照以前的陳舊思路 移動MM商城的簡訊支付幾乎可以說是秒破,但是今天換一種思路探索更完美的破解手段——不讓其彈支付介面直接購買成功。(還是天哥的教程給了我動力膜拜..)怎麼個思路呢?還是得先分析關鍵.MethodonBillingFinish,定位到簡訊發送成功調用的代碼:
(其實,這段代碼出現支付介面只不過顯示“發送成功”),結合下面代碼很容易識別,交易成功與否的關鍵詞為:“didCompleteTransaction”“didCancelledTransaction”
那就直接搜尋關鍵詞唄 找到;類org/cocos2dx/IAP/IAPWrapper,裡面的方法有:
根據方法名猜測addpayment ,有添加支付彈窗的嫌疑,那我們就試著 將.method didCompleteTransaction裡的代碼全部複製到.method addPayment。安裝實驗。結果卻出現了:
一定是方法didCompleteTransaction 另有判斷,查看代碼 只有一個判斷,修改即可。
然後儲存,測試成功。