开心消消乐破解心得

1、脱壳

  • a、反编译
  • b、删除目录smali,修改目录smali_classes2为smali
  • c、修改Application入口为com.happyelements.AndroidAnimal.MainApplication

2、内购破解

  • a、搜索payfailed
  • b、替换文件TelecomPayment$2$2.smali中payfailed方法中的实现为paySuccess实现

3、游戏步数破解

    • a、lua反编译assets/src目录下代码
    • b、找到MoveMode.*.lua
    • c、做如下修改

old:

function MoveMode:useMove()
  local mainLogic = self.mainLogic;
    mainLogic.theCurMoves = mainLogic.theCurMoves - 1;
  if mainLogic.PlayUIDelegate then --------调用UI界面函数显示移动步数
    mainLogic.PlayUIDelegate:setMoveOrTimeCountCallback(mainLogic.theCurMoves, false)
    end
end

new:

function MoveMode:useMove()
  local mainLogic = self.mainLogic;
    mainLogic.theCurMoves = mainLogic.theCurMoves;
  if mainLogic.PlayUIDelegate then --------调用UI界面函数显示移动步数
    mainLogic.PlayUIDelegate:setMoveOrTimeCountCallback(mainLogic.theCurMoves, false)
    end
end
    • d、重新编译修改的lua文件,替换工程中对应文件

4、游戏步数破解另一种办法(针对周赛)

思路是开局步数加99步。因为周赛完成条件是步数为0,如果按方法3修改,会导致周赛无法结束。修改后的代码如下:

require "zoo.util.FUUUManager"

MoveMode = class(GameMode)

local fs = true

function MoveMode:update(dt)
  if self.mainLogic.isGamePaused == false then 
    self.mainLogic.timeTotalUsed = self.mainLogic.timeTotalUsed + dt;
  end
end

function MoveMode:reachEndCondition()
  return  self.mainLogic.theCurMoves <= 0
end

function MoveMode:afterFail()
  --FUUUManager:update(self)
  if self.mainLogic.theCurMoves > 0 and self.mainLogic.isUFOWin then
    GameExtandPlayLogic:showUFOReveivePanel(self, false)
  else
    GameExtandPlayLogic:showAddStepPanel(self)
  end
end

function MoveMode:getAddSteps(count)
  local mainLogic = self.mainLogic;
  mainLogic.hasAddMoveStep = { source = "tryAgainWhenFailed" , steps = count }
    mainLogic.theCurMoves = mainLogic.theCurMoves + count
    if mainLogic.PlayUIDelegate then
    mainLogic.PlayUIDelegate:setMoveOrTimeCountCallback(mainLogic.theCurMoves, false)
    end
  setTimeOut( function () GamePlayMusicPlayer:playEffect( GameMusicType.kPropAdd5stepFlyon ) end , 0.15 )
end

function MoveMode:useMove()
  local mainLogic = self.mainLogic;
  if fs then
    mainLogic.theCurMoves = mainLogic.theCurMoves + 99;
    fs = false
  else 
    mainLogic.theCurMoves = mainLogic.theCurMoves - 1;
  end
  if mainLogic.PlayUIDelegate then --------调用UI界面函数显示移动步数
    mainLogic.PlayUIDelegate:setMoveOrTimeCountCallback(mainLogic.theCurMoves, false)
    end
end

 

5、签名破解
目前没有真正破解签名,采用Xposed框架破解系统apk安装签名校验方法。做法是用原版签名替换打包后的签名,替换后的apk在正常安卓系统下是无法安装的,所以用Xposed破解后成功安装apk。然后apk内的签名校验因为签名使用的是官方签名,自然就能过签名验证了。

6、得分破解

  • a、lua反编译文件GamePlayConfig.*.lua
  • b、修改如下参数:
GamePlayConfigScore.MatchBySnow = 100
GamePlayConfigScore.DropDownIngredient = 10000                                              -- 收集得分
----消除对应特效得到的额外分数 
GamePlayConfigScore.SpecialBombkLine = 300                  
GamePlayConfigScore.SpecialBombkColumn = 200
GamePlayConfigScore.SpecialBombkWrap = 250
GamePlayConfigScore.SpecialBombkBird = 300

GamePlayConfigScore.SwapLineLine = 500                      ----交换两个直线特效附加分数
GamePlayConfigScore.SwapLineWrap = 1000                     ----交换直线特效和区域特效
GamePlayConfigScore.SwapWrapWrap = 1500                     ----交换两个区域特效附加分数
GamePlayConfigScore.SwapColorAnimal = 300                       ----交换鸟和普通动物
GamePlayConfigScore.SwapColorLine = 2000                    ----交换鸟和直线
GamePlayConfigScore.SwapColorWrap = 2500                    ----交换鸟和区域
GamePlayConfigScore.SwapColorColor = 5000                   ----交换鸟鸟
GamePlayConfigScore.SwapBlocker195 = 10000                  ----交换星星瓶和普通物品
GamePlayConfigScore.SwapSuperBlocker195 = 15000             ----交换星星瓶和鸟、星星瓶和染色宝宝

GamePlayConfigScore.MatchDeletedBase = 50                   ----消除单个动物的基础奖励分数
GamePlayConfigScore.MatchDeletedCrystal = 100               ----消除单个水晶的分数

GamePlayConfigScore.MatchAtLock = 100                       ----消除牢笼的得分
GamePlayConfigScore.MatchAtIce = 1000                       ----消除冰层的得分

GamePlayConfigScore.Furball = 100                           ----消除灰色毛球得分
GamePlayConfigScore.Balloon = 100                           ----消除气球得分
GamePlayConfigScore.Rabbit = 500
GamePlayConfigScore.Rocket = 200

GamePlayConfigScore.MatchAtDigGround = 100                  ----消除地块得分
GamePlayConfigScore.MatchAt_DigJewel = 1500                 ----消除宝石块得分
GamePlayConfigScore.MatchAt_BlackCuteBall = 5               ----消除一层黑色毛球的得分
GamePlayConfigScore.Collect_Snail = 10000                   ----收集蜗牛
GamePlayConfigScore.SandClean = 1000                        ----消除流沙
GamePlayConfigScore.QuestionMarkDestory = 1000              ----消除问号障碍得分

GamePlayConfigScore.Roost = 400
GamePlayConfigScore.BigMonster = 100
GamePlayConfigScore.ChestSquare = 100
GamePlayConfigScore.MayDayBossBeHit = 100
GamePlayConfigScore.WeeklyBossBeHit = 100

GamePlayConfigScore.SeaAnimalPenguin = 10000
GamePlayConfigScore.SeaAnimalSeal = 10000
GamePlayConfigScore.SeaAnimalBear = 10000

GamePlayConfigScore.CrystalStone = 10000 -- 染色宝宝分数

GamePlayConfigScore.NormalTotems = 10
GamePlayConfigScore.SuperTotems = 10000

GamePlayConfigScore.BonusTimeScore = 2500

 

    • c、重新编译修改的lua文件,替换工程中对应文件

over