旅行青蛙反編譯學習-青蛙旅行破解

最近旅行青蛙風靡朋友圈 而我為了想給我的蛙蛙弄點好吃的(出去裝逼),就萌生了反編譯這個念頭。

教程僅僅提供于學習 不可作其他用途

解壓所需要的文件

先下載apk 然后解壓apk 在assets\bin\Data\Managed\Assembly-CSharp.dll 是unity編譯出來的代碼 所有的邏輯都在這里面。(WTF 我也不懂C#)

反編譯工具

這里我下載了兩款工具用于使用

  • JetBrains dotPeek
  • dnSpy
    剛開始我用的JetBrains家的dotPeek 這東西挺好用 跟android studio的快捷相似 能夠通過點擊跳轉 找到邏輯
    找到需要的類之后 打開dnSpy去修改響應的值

過程

把 Assembly-CSharp.dll丟進去dotPeek
image.png

通過查看類名 發現了可能是數據儲存的地方


image.png

點開SaveDataFormat,一進去就看到路徑


image.png

通過查詢 知道了該路徑在android 上的path 是/storage/emulated/0/Android/data/package name/files
查看手機 發現了GameData.sav兩個文件

剛開始我是想通過寫C#將文件讀出來 寫進去的方式修改 但是后面發現二進制的序列化和反序列化沒辦法跨數據集,屢次失敗 然后通過搜索 換了種思路(改dll)

通過跳轉查邏輯 最終發現SuperGameMaster這個類是顯示以及獲取數據的地方,游戲的邏輯是從數據包中讀取數據 并將對象放到一個對象之后。然后通過一個方法獲取響應的值。類似于java的get,看圖就懂了


image.png

如下圖,ticket是指抽獎券 那么現在開始修改 右鍵 編輯


image.png

先點擊右下角的重置 將這個三個的勾選去掉 然后0 和 1 隨便一個 右鍵刪除指令 現在剩下一個操作和一個return 。修改操作碼為idc.i4 將值改為你想要的值 比如200


image.png

點擊確定后可以看出代碼已經變成200了


image.png

當然了 限制不能超過999, 有一個方法做了處理。但是其實也沒必要超過 因為現在已經是永遠200 用不完的

重打包

將dll保存過后 替換掉原來的dll之后 需要重打包 因為android 簽名的時候會將所有文件做一個hash 所以去搜索一個android的重打包 重新打一個包 即可。

Tip:溫馨提示 因為簽名不一樣 所以不能覆蓋安裝。因為先將GameData.sav先保存一份 然后卸載原來的 再安裝自己反編譯的 再將文件導進去即可。
三葉草改 public static int CloverPointStock()方法即可

這次反編譯還請教了八哥、遠遠、學爺 讓我能反編譯下去(卡在序列化反序列化那個卡的我都想放棄了),這次我還發現反編譯dll比想象中好像簡單一點

  1. 用另類的方式修改三葉草/抽獎券
  2. 修改抽獎幾率
  3. 修改保存的圖片張數
  4. 獲得珍稀照片
  5. 縮短旅行時間

2018/2/1 更新。換種方式改三葉草/抽獎券

旅行青蛙版本:1.0.4

現在全程用dnspy修改

先搜索 足 這個字。這個字是買東西不夠錢會彈出來的提示。


image.png

setinfo 這個方法。定位到245行 將判斷條件改了


image.png
image.png

image.png

image.png

現在判斷條件改成負數(你自己想要的值也可),就能直接買了
但是錢還是會照扣,所以還要把寫入數據的地方改了

定位到同文件327行


image.png

image.png

image.png

image.png

現在就是你買多少 給你多少錢

那么抽獎券在第一個搜索關鍵字那里


image.png

image.png

image.png

image.png
image.png

image.png

這樣就能完成抽獎券的修改

這樣修改能讓人不知道我們修改過

修改抽獎幾率

在修改抽獎券的同一文件下


image.png

這個方法就是抽獎的方法


白球60 籃球27 綠9 紅三 金1
這個是抽獎的概率。想要抽全是金就改成99就行 紅球金球都想就改成98 綠也想就改成94


image.png
image.png

修改保存的圖片張數(待測試)

image.png

image.png

現在修改成了600 現在我的圖片還沒到60,待測試是否通過
只改這個到了60 還是會讓你刪除

image.png

這邊的判斷也改一下 就能保存了

但是還存在 相冊不能右翻頁到11頁的情況

image.png

這個也改掉就能 看10頁以外的圖片

2018/02/03 加快游戲進程

在initLoading的時候 會查看并刷新剩余出門時間


image.png

這個方法就是計算你剩余多久進行下一個活動。本來我是想讓兒子立刻出門的。但是測試發現有問題,因為參數是互相糾纏在一起。因此不好弄。只好加快游戲進程


image.png

我們點進去這個方法
image.png

會發現都在減這個時間


image.png

看這個activeMath這個方法
等這個時間減少之后 就發觸發事件了(應該是這樣的)
回到loading
image.png

會發現傳的參數是lasttime什么的
點進去
image.png

發現是用現在設備的時間減去上一次登陸進去游戲的時間
看上面 要是校驗時間失敗就會返回0
Mathf。clamp這個方法搜索知道 這個時間不能大于一個月 不然算一個月
因此想要時間加速就話就改參數吧
這個是秒 那么我就想加速60倍 一秒當一分鐘用
==================================
錯誤示范


image.png

本來以為*60 會很難寫 沒想到試出來了 還好沒放棄
image.png

加這兩句
==================================
以上是錯誤得 我有點天真 想著能夠通過相乘進行加速 但是我弄不出來 相乘之后 會卡在initLoading那里
最后實在沒有辦法 就將最小得值改為一個小時 就是說 你initLoading一次 就過去一個小時
image.png

2018/02/02 獲得珍稀照片(測試中)

================
測試中 不保證正確

image.png

如圖 找到叫珍稀照片的關鍵字 知道是這個getEvt方法獲得的list里判斷的


image.png

將判斷條件改了應該就ok了


image.png

此外 合影我也想要
image.png

2018/02/03 更新 改這個參數只是能更輕松進入到待選席位上


如上圖 timeSpanSec 會在刷新的時候減去這個參數
所以 要想辦法減少這個參數就行
如圖是普通的(應該就是單身狗)
這個就不管了

~~后面的一判斷條件一層一層 暫時沒想到法子能直接弄 ~~
在珍稀的這個方法中 有一個叫flag的東西


image.png

把flag都改成true就行了


image.png

但是改了還是不一定能每次有ssr

=============================================

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,065評論 25 708
  • 。。。
    adamworth_90f4閱讀 215評論 0 0
  • 今天我讀了《青銅葵花》這本書。這本書講的是城市女孩葵花由于一次事故,被大麥地里最窮的一戶人家——青銅一家所收養故事...
    suifeng76閱讀 175評論 0 0
  • 夜晚你從遙遠的地方打來了電話, 說想我, 我握著電話的手感覺有點發抖, 淚水瞬間從眼里涌出! 我不知道是為什么, ...
    隨緣青青閱讀 230評論 1 3
  • 今天是七夕節,回顧以往,這已是我跟老公的第十個七夕節了。 記得認識第一年過七夕,老公(那時候是剛確立關系的男女...
    晴冰閱讀 294評論 0 0