动物餐厅存档分析

点击上方蓝字[协议分析与还原]关注我们


 分析小游戏动物餐厅的存档修改。

最近分析了一款很老的小游戏动物餐厅,它最早在小程序里风靡了很久,后来又有了APP,当然,也挺好玩的,里面的东西还蛮多的,比如鱼干、胶卷、盘子、钻石、瓶子、鱼饵、铃铛、外卖赞、放大镜、花朵、鱼、设施、各种类似夹娃娃机的小游戏。

4239228a531de03a34d134a375b3fbeb.jpeg

3829305225cd8b0809e73bbd49c08f82.png

分析发现,目前这款游戏的APP,小程序版的存档使用了小程序加密网络通道进行加密,加密过程种使用的是微信提供的key,需要登陆微信才能获取得到,而APP版,则没有加密,可以改。

01

小程序的加密

小程序使用的服务器是单独的,存档是单独的,接口也是独一份的,接口使用的是uploadEncryptRecord,它存档的加密用的密钥,是微信提供的key,可以从wx.getUserCryptoManager().getLatestUserKey的使用过程看明白,每次加密都从微信客户端获取一组key,iv,版本和过期时间,当然,没有过期就能继续用,过期时间还蛮长的,这个key会在微信服务器和客户端之间同步,每个账号每个小程序对应不同的key,动物餐厅的服务器会向微信服务器请求用户对应的key来解密加密的数据。

这是接口里传输的加密数据:

{
  "encryptedData": "U2FsdGVkX-ProtocolSecurity-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-ProtocolSecurity-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",
  "encryptKeyVersion": 12,
  "openid": "ciqDH5TNoZZ/qz2Ixxxxxxxxxxxxq0cEHZQ9X/vitwiShC/lg==",
  "code": "093vH0000Fxxxxx-ProtocolSecurity-vH00S"
}

其中encryptedData为存档,用getLatestUserKey获取的密钥加密的,加密使用的算法是使用的CryptoJS里面的AES,额外提一句,这个库的接口对熟悉标准加解密算法实现的人很不友好,它对用来加密的key和iv,会经过一番处理,才得到真实使用的key及iv,要看代码,不然会被坑。

openid使用的是rsa加密,服务器自然会解密,得到明文的openid。

服务器使用openid和自身的access_token、signature去从微信服务器获取key,从而实现了密钥的同步及数据的加解密。

解密后可用发现上传的数据是这样子的:

{"openid":"oe6z6-ProtocolSecurity-74XQfSs","starSum":15,"playTime":1202377.0000000005,"record":"{\"@#@_Anniversary2022StoreData\":\"{\\\"buyCount\\\":0}\",\"@#@_Band\":\"{\\\"InviteCard\\\":{\\\"refreshTime\\\":1665927823235,\\\"aDTimes\\\":0,\\\"buyTimes\\\":0,\\\"cardsNum\\\":0,\\\"daily\\\":{}},\\\"CallCard\\\":{\\\"refreshTime\\\":1665927823235,\\\"aDTimes\\\":0,\\\"buyTimes\\\":0,\\\"cardsNum\\\":1,\\\"daily\\\":{}},\\\"BandTips\\\":{\\\"customers\\\":[],\\\"film\\\":0,\\\"money\\\":0,\\\"lastTime\\\":0},\\\"BandUnlockState\\\":{},\\\"ShowTime\\\":{},\\\"Fans\\\":{}}\",\"@#@_BattleOrder\":\"{\\\"startTime\\\":1665927243059,\\\"year\\\":2022,\\\"isOpenInfo\\\":0,\\\"isOpenInfoAgain\\\":0,\\\"expPoint\\\":0,\\\"isBuySuperPermission\\\":0,\\\"exchangeTimes\\\":0,\\\"rewardInfos\\\":[{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false},{\\\"normal\\\":false,\\\"super\\\":false}],\\\"cumulativeSendAd\\\":0,\\\"cumulativeOnlineMin\\\":23,\\\"popBuyInfo\\\":{\\\"100\\\":false,\\\"200\\\":false,\\\"300\\\":false,\\\"400\\\":false,\\\"500\\\":false,\\\"650\\\":false,\\\"800\\\":false,\\\"950\\\":false,\\\"1100\\\":false,\\\"1250\\\":false,\\\"1450\\\":false,\\\"1600\\\":false},\\\"isGotMiss\\\":0,\\\"isCompensated\\\":0}\",\"@#@_BattleOrderTimestamp\":\"t8ce8f6290\",\"@#@_CourtyardFurnishData\":\"{\\\"planList\\\":[{\\\"title\\\":null,\\\"courtyardBuildings\\\":null},{\\\"title\\\":null,\\\"courtyardBuildings\\\":null},{\\\"title\\\":null,\\\"courtyardBuildings\\\":null},{\\\"title\\\":null,\\\"courtyardBuildings\\\":null},{\\\"title\\\":null,\\\"courtyardBuildings\\\":null},{\\\"title\\\":null,\\\"courtyardBuildings\\\":null}],\\\"eidtNameTime\\\":[0,0,0,0,0,0],\\\"lastEditTime\\\":0,\\\"nextMonday\\\":0}\",\"@#@_CourtyardPosters\":\"{\\\"poster_7\\\":{\\\"status\\\":1,\\\"timestamp\\\":1665927244085,\\\"new\\\":true,\\\"shared\\\":false}}\",\"@#@_DailyTaskData\":\"{\\\"endTime\\\":1665927237959,\\\"taskList\\\":[{\\\"index\\\":27,\\\"rate\\\":0,\\\"status\\\":0},{\\\"index\\\":12,\\\"rate\\\":256,\\\"status\\\":0},{\\\"index\\\":1,\\\"rate\\\":7300,\\\"status\\\":0},{\\\"index\\\":28,\\\"rate\\\":31,\\\"status\\\":0},{\\\"index\\\":29,\\\"rate\\\":11,\\\"status\\\":0},{\\\"index\\\":8,\\\"rate\\\":50,\\\"status\\\":0}]}\",\"@#@_DataTerraceMemorial\":\"{\\\"status\\\":{}}\",\"@#@_LimitedTimeStore\":\"{\\\"startTime\\\":1665927241813,\\\"buyCount\\\":0,\\\"hasOpenedView\\\":true,\\\"watchVideoTimeToday\\\":0}\",\"@#@_PondStoreData\":\"{\\\"saleFishes\\\":[{\\\"fishType\\\":1,\\\"buyCount\\\":0},{\\\"fishType\\\":11,\\\"buyCount\\\":0},{\\\"fishType\\\":9,\\\"buyCount\\\":0}],\\\"preSaleFishesIdList\\\":[8,1,9],\\\"nextUpdateTime\\\":1665964800000,\\\"currentEndTime\\\":1665925200000,\\\"fishBagList\\\":[]}\",\"@#@_PondUserDataKey\":\"[{\\\"boothID\\\":1,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false},{\\\"boothID\\\":2,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false},{\\\"boothID\\\":3,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false},{\\\"boothID\\\":4,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false},{\\\"boothID\\\":5,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false},{\\\"boothID\\\":6,\\\"owner\\\":-1,\\\"state\\\":1,\\\"constructionEndTime\\\":-1,\\\"hiringStartTime\\\":-1,\\\"hiringEndTime\\\":-1,\\\"hiringOutputTimes\\\":[],\\\"caseReadyFishTag\\\":-1,\\\"caseReadyFishID\\\":-1,\\\"rentingEndTime\\\":-1,\\\"rentingResult\\\":null,\\\"rentingLifeLeftTime\\\":-1,\\\"rentingFishID\\\":-1,\\\"offlineOutputTimes\\\":-1,\\\"offlineOwner\\\":-1,\\\"isCount\\\":false}]\",\"@#@_ReportData\":\"{\\\"itemCount\\\":{\\\"0\\\":5,\\\"1\\\":2}}\",\"@#@___@tempUid\":\"ta48dd6390\",\"@#@_advertiseAdCount\":\"tddba67920\",\"@#@_barrage_8\":\"t136231671\",\"@#@_building_lv_booth_zhaozu\":\"t579359092\",\"@#@_building_lv_building_1_group\":\"t787ae6402\",\"@#@_building_lv_building_24_group\":\"t77e691242\",\"@#@_building_lv_building_25_group\":\"t595ec7522\",\"@#@_building_lv_building_2_group\":\"td19fb3542\",\"@#@_building_lv_building_3_group\":\"tdb9905182\",\"@#@_capsuleFreeTimes\":\"t8382d9580\",\"@#@_cookbook_unlock_food_10\":\"t95be75061\",\"@#@_cookbook_unlock_food_49\":\"t204582561\",\"@#@_cookbook_unlock_food_50\":\"t3f50f1021\",\"@#@_cumulative_ad\":\"t0f654313256\",\"@#@_cumulative_customer\":\"t8ad9698550\",\"@#@_cumulative_customer_customer_2\":\"tc497a53031\",\"@#@_cumulative_customer_customer_40\":\"tc1f772068\",\"@#@_cumulative_customer_customer_54\":\"t86a2821111\",\"@#@_cumulative_food_food_10\":\"td4cc212731\",\"@#@_cumulative_food_food_49\":\"tf294d36013\",\"@#@_cumulative_food_food_50\":\"t8cf762906\",\"@#@_cumulative_money\":\"t524a03867300\",\"@#@_customerComingCount\":\"tcd3a827714\",\"@#@_customer_unlock_customer_2\":\"tdc0d28361\",\"@#@_customer_unlock_customer_40\":\"t48bdb6591\",\"@#@_customer_unlock_customer_54\":\"t9cd688711\",\"@#@_customer_unlock_npc_3\":\"t57be34701\",\"@#@_customer_unlock_npc_6\":\"td24a43681\",\"@#@_dailyIncome\":\"{\\\"lastTime\\\":1665927242107}\",\"@#@_first_watch_ad\":\"t9b0bf6820\",\"@#@_fixDlg_courtyard\":\"t78fe46941\",\"@#@_freeAdCount\":\"t050233861\",\"@#@_freeFishTimes\":\"t19dfb2230\",\"@#@_freeRewardTimestamp\":\"t72c595581665932910877\",\"@#@_lastCreateNpcTime\":\"t1cf0d1231665932687415\",\"@#@_lastServerId_1\":\"t3a3198221\",\"@#@_limitedStoreTimestamp\":\"t6f7985781665927244019\",\"@#@_money\":\"t875073725000\",\"@#@_niudanBagNum\":\"t798fc6063\",\"@#@_noSuitAdCount\":\"t5d1145920\",\"@#@_noticeRedDotTime\":\"{\\\"showDlgCount\\\":1,\\\"shopData\\\":{\\\"lastShowTime\\\":1665932678656,\\\"showCount\\\":1},\\\"newNoticeTime\\\":\\\"2022-10-9-0\\\",\\\"lastShowDay\\\":\\\"2022-10-16\\\"}\",\"@#@_npcInitStep\":\"t8a3108652\",\"@#@_npc_6_money\":\"t13f1d7116200\",\"@#@_ornaments\":\"{\\\"ornamentsMap\\\":{}}\",\"@#@_playTime\":\"t1b0dc1641202377.0000000005\",\"@#@_pondFree\":\"{\\\"times\\\":0}\",\"@#@_recordCustomer\":\"[{\\\"cid\\\":\\\"customer_54\\\",\\\"adIndex\\\":1},{\\\"cid\\\":\\\"customer_2\\\",\\\"adIndex\\\":1},{\\\"cid\\\":\\\"customer_2\\\",\\\"adIndex\\\":1},{\\\"cid\\\":\\\"customer_54\\\",\\\"adIndex\\\":1},{\\\"cid\\\":\\\"customer_2\\\"}]\",\"@#@_recordItemBag\":\"{\\\"coin\\\":{},\\\"checkSign\\\":\\\"6920d\\\"}\",\"@#@_refreshBagTime\":\"t407501611665927244027\",\"@#@_refreshMonthBagTime\":\"te5deb1711665927244180\",\"@#@_resetTimestamp\":\"ted2512791665927241807\",\"@#@_richangBagNum\":\"td26a53222\",\"@#@_shareTimes\":\"t0d28d5240\",\"@#@_shareToSkipAd\":\"{\\\"dailyCount\\\":0,\\\"lastShareTime\\\":0,\\\"lastRefreshTime\\\":1665927251819,\\\"lastNoSuitAdCount\\\":0,\\\"noSuitAdCount\\\":0}\",\"@#@_signupTime\":\"t15f715401665927229963\",\"@#@_superAdSkipBagNum\":\"tc191b6261\",\"@#@_terrace_customer_recorder\":\"{\\\"customer_shutudidi\\\":{\\\"is_solicit\\\":0,\\\"ad_1_num\\\":0,\\\"ad_2_num\\\":0,\\\"ad_3_num\\\":0},\\\"customer_shutugege\\\":{\\\"is_solicit\\\":0,\\\"ad_1_num\\\":0,\\\"ad_2_num\\\":0,\\\"ad_3_num\\\":0},\\\"customer_dubin\\\":{\\\"is_solicit\\\":0,\\\"ad_1_num\\\":0,\\\"ad_2_num\\\":0,\\\"ad_3_num\\\":0},\\\"customer_sunny\\\":{\\\"is_solicit\\\":0,\\\"ad_1_num\\\":0,\\\"ad_2_num\\\":0,\\\"ad_3_num\\\":0},\\\"customer_crazyHat\\\":{\\\"is_solicit\\\":0,\\\"ad_1_num\\\":0,\\\"ad_2_num\\\":0,\\\"ad_3_num\\\":0}}\",\"@#@_theme_theme_buffetRoom_group\":\"tc7e338862\",\"@#@_theme_theme_diningRoom_group\":\"t5c8bd8582\",\"@#@_theme_theme_kitchRoom_group\":\"tadb436462\",\"@#@_theme_theme_outdoor_group\":\"t92d8e29632\",\"@#@_theme_theme_terrace_group\":\"t57be35272\",\"@#@_tipTimestamp\":\"t2735b5161665932947398\",\"@#@_tutorials_progress\":\"tadbbc3186\",\"@#@_tutorials_progress_two\":\"t27a0d4145\",\"@#@_tutorials_update_ui\":\"t2755b5421\",\"@#@_weekBagXuanChuan_bb\":\"t171ad1791665927228648\",\"@#@_xiariBagNum\":\"t6d36c6432\",\"@#@_xinshouBagStartTime\":\"te25948341665927240622\",\"@#@_xuanchuanBagNum\":\"t5fc4d1113\",\"@#@_zoomPotion\":\"{\\\"customers\\\":[],\\\"wishpoolCount\\\":0,\\\"dailyCountRefreshTime\\\":1665927271812}\",\"openid\":\"{\\\"openid\\\":\\\"oe6z6-ProtocolSecurity-XQfSs\\\",\\\"serverId\\\":534}\",\"reportUserId\":\"t4b5649750\",\"um_od\":\"t43f1b1170\",\"um_unid\":\"tc9d421510\",\"um_uuid\":\"tacca52330\",\"version\":\"t9590259436\"}","type":"wx","checkSign2":"4a10d543","thumb":0,"dia":0,"money":5000,"plate":0}

参数和没有加密的版本差不多,存档有点特殊,多了些“@#@_”。

02


上传存档的检验

小程序和APP上传存档的接口都要进行校验,校验值为接口中的checkSign2。

var a = l.MD5("32roiFEI" + e.record + n.openid).toString();
e.checkSign2 =
a.charAt(8) +
a.charAt(3) +
a.charAt(21) +
a.charAt(10) +
a.charAt(16) +
a.charAt(9) +
a.charAt(11) +
a.charAt(23));

存档里面,自身也有一些校验。

例如信件和各个数字:

g = h.MD5(f + l.globalKey).toString(),
m =g.charAt(17) +g.charAt(3) +g.charAt(27) + g.charAt(11) + g.charAt(23);

里面的东西都类似。

03


ID的获取

动物餐厅专门留了获取ID的路子,方便修改存档,只是复制的位置不一样,在小程序上,复制位置在设置里,“多多和咪咕感谢你的玩耍”这个位置:

e896e4264daf7054f6a97e3a3912043a.png

APP的位置不一样,在右边的猫咪那里:

869080d4de1797c76c0e8126428e500c.jpeg

复制的id,当然是RSA加密的,没关系,是可用随便用的。

大家玩一玩,如果玩的过程中遇到了问题,到公众号后台联系我。

别忘点“在看”、“赞”和“分享”

新的规则,及时收推文要先给公号星标

别忘了星标一下,不然就错过了

e704053dcd9bbbfeb5e40cb41d41af15.jpeg

长按进行关注,时刻进行交流。

猜你喜欢

转载自blog.csdn.net/yeyiqun/article/details/127723909