最近旅行青蛙風靡朋友圈 而我為了想給我的蛙蛙弄點好吃的(出去裝逼),就萌生了反編譯這個念頭。
教程僅僅提供于學習 不可作其他用途
解壓所需要的文件
先下載apk 然后解壓apk 在assets\bin\Data\Managed\Assembly-CSharp.dll 是unity編譯出來的代碼 所有的邏輯都在這里面。(WTF 我也不懂C#)
反編譯工具
這里我下載了兩款工具用于使用
- JetBrains dotPeek
- dnSpy
剛開始我用的JetBrains家的dotPeek 這東西挺好用 跟android studio的快捷相似 能夠通過點擊跳轉 找到邏輯
找到需要的類之后 打開dnSpy去修改響應的值
過程
把 Assembly-CSharp.dll丟進去dotPeek通過查看類名 發現了可能是數據儲存的地方
點開SaveDataFormat,一進去就看到路徑
通過查詢 知道了該路徑在android 上的path 是/storage/emulated/0/Android/data/package name/files
查看手機 發現了GameData.sav兩個文件
剛開始我是想通過寫C#將文件讀出來 寫進去的方式修改 但是后面發現二進制的序列化和反序列化沒辦法跨數據集,屢次失敗 然后通過搜索 換了種思路(改dll)
通過跳轉查邏輯 最終發現SuperGameMaster這個類是顯示以及獲取數據的地方,游戲的邏輯是從數據包中讀取數據 并將對象放到一個對象之后。然后通過一個方法獲取響應的值。類似于java的get,看圖就懂了
如下圖,ticket是指抽獎券 那么現在開始修改 右鍵 編輯
先點擊右下角的重置 將這個三個的勾選去掉 然后0 和 1 隨便一個 右鍵刪除指令 現在剩下一個操作和一個return 。修改操作碼為idc.i4 將值改為你想要的值 比如200
點擊確定后可以看出代碼已經變成200了
當然了 限制不能超過999, 有一個方法做了處理。但是其實也沒必要超過 因為現在已經是永遠200 用不完的
重打包
將dll保存過后 替換掉原來的dll之后 需要重打包 因為android 簽名的時候會將所有文件做一個hash 所以去搜索一個android的重打包 重新打一個包 即可。
Tip:溫馨提示 因為簽名不一樣 所以不能覆蓋安裝。因為先將GameData.sav先保存一份 然后卸載原來的 再安裝自己反編譯的 再將文件導進去即可。
三葉草改 public static int CloverPointStock()方法即可
這次反編譯還請教了八哥、遠遠、學爺 讓我能反編譯下去(卡在序列化反序列化那個卡的我都想放棄了),這次我還發現反編譯dll比想象中好像簡單一點
- 用另類的方式修改三葉草/抽獎券
- 修改抽獎幾率
- 修改保存的圖片張數
- 獲得珍稀照片
- 縮短旅行時間
2018/2/1 更新。換種方式改三葉草/抽獎券
旅行青蛙版本:1.0.4
現在全程用dnspy修改
先搜索 足 這個字。這個字是買東西不夠錢會彈出來的提示。
setinfo 這個方法。定位到245行 將判斷條件改了
現在判斷條件改成負數(你自己想要的值也可),就能直接買了
但是錢還是會照扣,所以還要把寫入數據的地方改了
定位到同文件327行
現在就是你買多少 給你多少錢
那么抽獎券在第一個搜索關鍵字那里
這樣就能完成抽獎券的修改
這樣修改能讓人不知道我們修改過
修改抽獎幾率
在修改抽獎券的同一文件下
這個方法就是抽獎的方法
白球60 籃球27 綠9 紅三 金1
這個是抽獎的概率。想要抽全是金就改成99就行 紅球金球都想就改成98 綠也想就改成94
修改保存的圖片張數(待測試)
現在修改成了600 現在我的圖片還沒到60,待測試是否通過
只改這個到了60 還是會讓你刪除
這邊的判斷也改一下 就能保存了
但是還存在 相冊不能右翻頁到11頁的情況
這個也改掉就能 看10頁以外的圖片
2018/02/03 加快游戲進程
在initLoading的時候 會查看并刷新剩余出門時間
這個方法就是計算你剩余多久進行下一個活動。本來我是想讓兒子立刻出門的。但是測試發現有問題,因為參數是互相糾纏在一起。因此不好弄。只好加快游戲進程
我們點進去這個方法
會發現都在減這個時間
看這個activeMath這個方法
等這個時間減少之后 就發觸發事件了(應該是這樣的)
回到loading
會發現傳的參數是lasttime什么的
點進去
發現是用現在設備的時間減去上一次登陸進去游戲的時間
看上面 要是校驗時間失敗就會返回0
Mathf。clamp這個方法搜索知道 這個時間不能大于一個月 不然算一個月
因此想要時間加速就話就改參數吧
這個是秒 那么我就想加速60倍 一秒當一分鐘用
==================================
錯誤示范
本來以為*60 會很難寫 沒想到試出來了 還好沒放棄
加這兩句
==================================
以上是錯誤得 我有點天真 想著能夠通過相乘進行加速 但是我弄不出來 相乘之后 會卡在initLoading那里
最后實在沒有辦法 就將最小得值改為一個小時 就是說 你initLoading一次 就過去一個小時
2018/02/02 獲得珍稀照片(測試中)
================
測試中 不保證正確
如圖 找到叫珍稀照片的關鍵字 知道是這個getEvt方法獲得的list里判斷的
將判斷條件改了應該就ok了
此外 合影我也想要
2018/02/03 更新 改這個參數只是能更輕松進入到待選席位上
如上圖 timeSpanSec 會在刷新的時候減去這個參數
所以 要想辦法減少這個參數就行
如圖是普通的(應該就是單身狗)
這個就不管了
~~后面的一判斷條件一層一層 暫時沒想到法子能直接弄 ~~
在珍稀的這個方法中 有一個叫flag的東西
把flag都改成true就行了
但是改了還是不一定能每次有ssr
=============================================