一.游戲功能邏輯分析
打開(kāi)神腦洞游戲試玩兩把蒋畜,發(fā)現(xiàn)該游戲需要完整觀看廣告才能增加游戲次數(shù),中途退出觀看廣告或者退出游戲都無(wú)法增加游戲次數(shù)
二.破解思路
想破解這個(gè)游戲無(wú)限制游戲次數(shù),分析一下大致可從兩個(gè)方面入手
方案1:直接找到游戲次數(shù)變量進(jìn)行修改
方案2:通過(guò)破解觀看廣告流程實(shí)現(xiàn)增加
方案1
針對(duì)游戲次數(shù)這種數(shù)據(jù)一般會(huì)保存到本地文件,打開(kāi)MT管理器,查看數(shù)據(jù)庫(kù)目錄發(fā)現(xiàn)一個(gè)可疑文件jsb.sqlite
文件導(dǎo)出到電腦雌团,使用SQLiteStudio打開(kāi)一看,??發(fā)現(xiàn)這個(gè)字段zqddn_zhb_keyCount跟游戲內(nèi)可玩次數(shù)數(shù)據(jù)一樣而且名字也是什么次數(shù)的意思難道就是游戲可玩次數(shù)士聪?嘗試編輯修改為999??保存锦援,再將該文件推到手機(jī)源文件目錄adb push C:\Users\Administrator\Desktop\jsb.sqlite /data/data/com.wonder.dianxianjiaoji/databases , 重啟一下游戲
?方案1驗(yàn)證成功剥悟!
方案2
既然要分析增加流程免不了分析代碼灵寺,拖到j(luò)adx反編譯出源代碼,先看看廣告頁(yè)是哪個(gè)界面区岗,adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{315db729 u0 com.wonder.dianxianjiaoji/com.bytedance.sdk.openadsdk.activity.TTRewardVideoActivity}
進(jìn)入該類(lèi)文件略板,直接使用32氪金裸眼調(diào)試先從上往下掃描一次代碼邏輯再說(shuō),??465行發(fā)現(xiàn)可疑代碼慈缔,onVideoComplete這不就是視頻播放完成得意思嗎叮称,看來(lái)這應(yīng)該就是視頻播放完回調(diào)了,下面還有一些播放錯(cuò)誤藐鹤,播放跳過(guò)的邏輯省略不看了瓤檐,先分析下這里怎么改測(cè)試一下再說(shuō)。
思考破解方式:這里調(diào)用了TTRewardVideoActivity.this.ar = (int) (System.currentTimeMillis() / 1000);這樣一行代碼娱节,不難理解這就是獲取視頻播放了多少s存入了ar變量挠蛉,后續(xù)肯定是根據(jù)這個(gè)是否大于視頻總時(shí)長(zhǎng)來(lái)判斷是否播放完成發(fā)放獎(jiǎng)勵(lì)的,那修改這里直接返回一個(gè)類(lèi)似999的大數(shù)值給他應(yīng)該就可以了括堤,那在什么地方進(jìn)行調(diào)用呢碌秸,既然播放完回調(diào)這里那我們就將這塊代碼調(diào)用直接放到廣告頁(yè)onCreate方法末尾的位置(前面肯定有些初始化視頻的邏輯)執(zhí)行再調(diào)用finish函數(shù)绍移,這樣一進(jìn)入廣告頁(yè)視頻就自動(dòng)調(diào)用播放完成代碼并結(jié)束廣告頁(yè)悄窃,應(yīng)該就能實(shí)現(xiàn)點(diǎn)擊按鈕就直接增加次數(shù)了。
直接打開(kāi)AndroidKiller開(kāi)干蹂窖,找到視頻播放完成的邏輯轧抗,??此處是在匿名內(nèi)部類(lèi)調(diào)用的,而我目的地在移植到onCreate方法瞬测,smail調(diào)用代碼肯定要修改一下才能運(yùn)行横媚,先復(fù)制該段smail代碼到TTRewardVideoActivity.smail 下onCreate最后位置纠炮,經(jīng)過(guò)一頓操作修改調(diào)試后的smail代碼為??回編譯運(yùn)行,點(diǎn)擊觀看短片??灯蝴?恢口??報(bào)了個(gè)toast異常意思好像是說(shuō)獲取廣告配置錯(cuò)誤穷躁,思考一下剛只修改了廣告頁(yè)的邏輯耕肩,這還沒(méi)進(jìn)到廣告頁(yè)就報(bào)了,那說(shuō)明不是我修改代碼邏輯導(dǎo)致问潭,看來(lái)跟簽名校驗(yàn)有關(guān)了猿诸,還好最近搞了個(gè)一鍵暴力破解簽名校驗(yàn)了工具kstools,懶得再這個(gè)項(xiàng)目里一個(gè)一個(gè)地方的搜索找簽名校驗(yàn)的地方了狡忙,直接打開(kāi)工具暴力破解再說(shuō)梳虽。再重新把修改得smail代碼復(fù)制到新的簽名破解包位置,重新回編譯運(yùn)行灾茁,安裝運(yùn)行點(diǎn)擊觀看短片窜觉,ok,頁(yè)面無(wú)任何跳轉(zhuǎn)直接成功+1?
三.總結(jié)
分析類(lèi)似單機(jī)游戲可玩次數(shù)這種流程北专,一般游戲數(shù)據(jù)都是存到本地的竖螃,有一定開(kāi)發(fā)經(jīng)驗(yàn)的同學(xué)肯定能想到查看sqlite以及sp文件這兩個(gè)地方看是否能找到關(guān)鍵信息,若此處沒(méi)有信息那么通過(guò)分析增加流程也可追到關(guān)鍵增加次數(shù)代碼邏輯處逗余,再偽造一次完成的過(guò)程即可特咆。
遇到的問(wèn)題:在移植對(duì)應(yīng)smail代碼遇到一些問(wèn)題,一個(gè)類(lèi)的匿名內(nèi)部類(lèi)或接口類(lèi)等調(diào)用該類(lèi)的方式和自己本身調(diào)用還是有些區(qū)別需要區(qū)分開(kāi)調(diào)用方式录粱。
轉(zhuǎn)載自易錦學(xué)員ray腻格,如有問(wèn)題可+3526762131