遇见你的猫破解

大类
Crack
iOS
技术标签
逆向-JS
逆向-iOS
开发-HookPatch-iOS
逆向-手游-Cocos2d-js
优先级
Low
开始日期
Jul 28, 2021
状态
Monitoring
Public
Public
最后更新
Jul 28, 2021

解密

使用OEDx/cocos-jsc-endecryptor v2.0分支 解密和重加密

免越狱更新

  • URL rewrite:
    • https://clifile.bad-mouse.com/update/android/2.2.11/project.manifest http://bjnode2.misty.moe:8800/beyourcat/2.2.11/project.manifest https://clifile.bad-mouse.com/update/android/2.2.11/assets/main/index.jsc http://bjnode2.misty.moe:8800/beyourcat/2.2.11/index.jsc
  • 自动更新:(使用./update_ver.sh 2.2.11),自动更新manifest中的md5
    • #!/bin/bash VER="$1" if [[ "$VER" == "" ]]; then echo "Missing version!" exit 1 fi cd $VER curl -O "https://clifile.bad-mouse.com/update/android/$VER/project.manifest" sed -i -E 's|"assets/main/index.jsc":\{"size":[0-9]*,"md5":"[0-9a-zA-Z]*"\}|"assets/main/index.jsc":{"size":'$(stat --printf="%s" index.jsc)',"md5":"'$(md5sum index.jsc | awk '{ printf $1 }')'"}|' project.manifest
      一定要注意sed的greedy匹配,要不然根本找不到原因...

破解

  • 自动跳广告:
    • 替换
      o.viewExited = !1;
      o.viewExited = !1;e.playFinish(r.GConst.AD_RET_TYPE.PLAY_OVER);return; // 注意看GConst前面的是r.GConst还是啥
 
  • 自动点广告:(正确方式)
    • 替换
      var e = I.Platform.time(), o = _.AdData.getLastAdTime(h.GConst.AD_PLAY_TYPE.GetHeart), n = h.GConst.AD_HEART_GIFT_CD - (e - o);
      var e = I.Platform.time(), o = _.AdData.getLastAdTime(h.GConst.AD_PLAY_TYPE.GetHeart), n = h.GConst.AD_HEART_GIFT_CD - (e - o); if (n < -20) { this.onClickAdHeart() }
      替换
      if ((n = h.GConst.AD_BALL_GIFT_CD - (e - i)) < 0) {
      if ((n = h.GConst.AD_BALL_GIFT_CD - (e - i)) < -20) { this.onClickAdBall() } if ((n = h.GConst.AD_BALL_GIFT_CD - (e - i)) < 0) {
       
  • 自动跳过种菜界面: (2.2.15)
    • 替换
    • this.lblAdCost.node.parent.active = !1; } if (t.time <= 30) { this.onClickBtnNormal() } else { this.onClickBtnAd() }
  • 自动跳过种菜界面:(2.2.33)
    • 替换
    • if (m.GuideManager.isGuide) { this.spNormalIcon.node.parent.x = 0; this.rightUseAdCtn.parent.active = !1; } if (t.time <= 30) { this.onClickBtnNormal() } else { this.onClickBtnAd() }
    • 替换
    • e.prototype._rightUseHeart = function() { return false; return _.CfgHelper.getCropCfg()[this._cropId].cost_heart > 0; };
  • 自动点种菜:
    • 替换
    • e.prototype._updateSpine = function() { if (!(l.FoodData.existItem(this._dishId) && !l.FoodData.isCropMature(this._dishId))) { this._onClickCrop() }
  • 测试模式
    • t.ENABLE_TEST = !1; t.ENABLE_SHOW_DEV_TOOL = !1;
  • 七夕/情人节无限鸟
    • 替换
    • t.ValentinesDayPetPlayLimit = 6; t.ValentinesDayFeedMaxCount = 6;
  • 活动时间延长(七夕为例)
    • t.getActivityCfg = function() { var ret = r("activity") ret[9].end_time = "20300101000000" return ret; };
  • 显示抓猫重力(无用)
    • 替换
      e.debugInfo = !1;
      e.debugInfo = !0;
  • 自动点广告:(错误方式)
    • 替换
      var e = v.Platform.time(), o = h.AdData.getLastAdTime(l.GConst.AD_PLAY_TYPE.GetHeart), n = l.GConst.AD_HEART_GIFT_CD - (e - o);
      var e = v.Platform.time(), o = h.AdData.getLastAdTime(l.GConst.AD_PLAY_TYPE.GetHeart), n = l.GConst.AD_HEART_GIFT_CD - (e - o); if (n < -20) { this.onClickAdHeart() }
       
      替换
      if ((n = l.GConst.AD_BALL_GIFT_CD - (e - i)) < 0) {
      if ((n = l.GConst.AD_BALL_GIFT_CD - (e - i)) < -20) { this.onClickAdBall() } if ((n = l.GConst.AD_BALL_GIFT_CD - (e - i)) < 0) {