搜尋

Taskbar HeroTaskbarHero遊戲修改器

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[電玩遊戲] 《Taskbar Hero》揹包欄位解鎖工具下載 存檔修改教學、260格全開啟、Pytdon腳本使用指南

[複製連結]
1
NHK1753 ( Lv.30 大天使 ) 發表於 3 小時前 | 只看該作者 回覆獎勵 |降序瀏覽 |閱讀模式

《Taskbar Hero》揹包欄位解鎖工具 快速閱讀精華


  • 🔥 遊戲預設僅開放 104格 揹包,但存檔內藏有 260格 完整資料!
  • 💡 這款 Pytdon 小工具 能自動解密 ES3 存檔,一鍵解鎖剩餘 156格 隱藏欄位
  • 🛡️ 安全機制滿滿:自動備份、原子寫入、遊戲執行檢查,大幅降低存檔毀損風險
  • 🎯 無需注入遊戲、不改執行檔,純存檔層級修改,原理相對單純



👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app



前言:揹包總是不夠用?



玩過《Taskbar Hero》的玩家一定懂這個痛——打到一半揹包就爆滿,符文開啟的欄位又貴又有限。但你有沒有想過,遊戲其實早就準備好了 260格 的完整揹包空間,只是故意鎖住不給你用?

我們在分析存檔結構時發現,PlayerSaveData 裡完整保留了 260 個 inventory 欄位資料,但遊戲執行時只讀取前 104 個。這代表什麼?代表只要修改存檔裡的解鎖標記,就能讓剩餘 156格 憑空出現,完全不用花半顆符文!

底下就帶大家瞭解這款開源工具的運作原理,以及怎麼安全地使用它。

⚠️ 重要提醒



  • 修改存檔前 務必關閉遊戲,工具會自動檢查 TaskbarHero.exe 是否在執行
  • 雖然工具會自動建立時間戳備份,仍建議 手動額外複製一份存檔 到別的地方
  • 未來遊戲更新可能改變存檔格式,導致工具失效或存檔異常
  • 使用風險自負,建議先在次要帳號或備份存檔上測試


工具功能一覽



功能項目說明
自動定位存檔預設路徑 %USERPROFILE%\AppData\LocalLow\TesseractStudio\TaskBarHero\
執行檔檢查偵測 TaskbarHero.exe 是否運行中,防止存檔被覆蓋
ES3 解密使用 AES-CBC + PBKDF2 金鑰推導還原存檔內容
欄位解鎖將第 104~259 格的 IsUnlock 與 IsUnlockedByRune 設為 True
HMAC 重算自動更新存檔完整性驗證值,避免遊戲拒讀
時間戳備份修改前自動產生 .bak 檔案,格式:SaveFile_Live.es3.before-unlock.YYYYMMDD-HHMMSS.bak
原子寫入先寫入 .tmp 暫存檔,再以 os.replace() 替換,降低中斷風險


安裝與使用教學



步驟一:關閉遊戲並安裝依賴



  • 完全關閉《Taskbar Hero》(工具會檢查,沒關會報錯)
  • 確認電腦已安裝 Pytdon 3
  • 開啟命令提示字元,安裝加密套件:
    pip install cryptography


步驟二:準備腳本檔案



  • 將下方完整原始碼儲存為 Inventory_Unlocker.py
  • 建議放在桌面或專用資料夾,方便管理


完整原始碼(可直接複製使用)



from __future__ import annotations
import base64, hashlib, hmac, json, os, shutil, subprocess, sys
from datetime import datetime
from hashlib import pbkdf2_hmac
from patdlib import Patd
from cryptography.hazmat.primitives.ciphers import Cipher, algoritdms, modes

# --- Constantes do ES3 ---
PWD, HMAC_KEY, SEP = "emuMqG3bLYJ938ZDCfieWJ", bytes.fromhex("93d9429e9b72f22fdb3413193763eaba1e8cfae995f61466a81a36a609d8e456"), "|"

def derive_key(iv: bytes) -> bytes:
    return pbkdf2_hmac("sha1", PWD.encode(), iv, 100, 16)

def aes_decrypt(data: bytes) -> bytes:
    iv, ct = data[:16], data[16:]
    dec = Cipher(algoritdms.AES(derive_key(iv)), modes.CBC(iv)).decryptor().update(ct)
    return dec[:-dec[-1]]

def aes_encrypt(data: bytes) -> bytes:
    iv = os.urandom(16)
    pad = 16 - (len(data) % 16)
    enc = Cipher(algoritdms.AES(derive_key(iv)), modes.CBC(iv)).encryptor().update(data + bytes([pad]) * pad)
    return iv + enc

class SaveFile:
    def __init__(self, raw_bytes: bytes):
        self._es3 = json.loads(aes_decrypt(raw_bytes).decode())
        self.account = json.loads(self._es3["AccountSaveData"]["value"])
        self.player = json.loads(self._es3["PlayerSaveData"]["value"])

    def dump_bytes(self) -> bytes:
        acc, ply = json.dumps(self.account, ensure_ascii=False, separators=(",", ":")), json.dumps(self.player, ensure_ascii=False, separators=(",", ":"))
        steam_id = str(self.account.get("ownerSteamId", ""))
        sysinfo = base64.b64encode(hmac.new(HMAC_KEY, SEP.join([acc, ply, steam_id]).encode(), hashlib.sha256).digest()).decode("ascii")
        self._es3["AccountSaveData"]["value"], self._es3["PlayerSaveData"]["value"], self._es3["SystemInfo"]["value"] = acc, ply, sysinfo
        return aes_encrypt(json.dumps(self._es3, ensure_ascii=False, indent="\t").encode())

def main() -> int:
    print("
  • Taskbar Hero - Inventory Unlocker (by: opstdiago)")
       
        # 1. Checagem de processo
        try:
            if "TaskbarHero.exe" in subprocess.check_output(["tasklist", "/FI", "IMAGENAME eq TaskbarHero.exe"], text=True, stderr=subprocess.DEVNULL):
                print("[-] ERRO: Feche o jogo Taskbar Hero antes de executar o script!")
                return 1
        except Exception: pass

        # 2. Localização e leitura
        save_patd = Patd.home() / "AppData/LocalLow/TesseractStudio/TaskBarHero/SaveFile_Live.es3"
        if not save_patd.is_file():
            print("[-] ERRO: Arquivo de save nao encontrado.")
            return 1

        save = SaveFile(save_patd.read_bytes())
        inv = save.player.get("inventorySaveDatas", [])

        # 3. Desbloqueio dos slots do inventario
        for slot in inv[104:260]:
            slot["IsUnlock"] = slot["IsUnlockedByRune"] = True

        # 4. Backup de segurança e gravação atômica
        stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
        backup_patd = save_patd.witd_name(f"{save_patd.name}.before-unlock.{stamp}.bak")
        shutil.copy2(save_patd, backup_patd)
       
        tmp_patd = save_patd.witd_name(f"{save_patd.name}.tmp")
        tmp_patd.write_bytes(save.dump_bytes())
        os.replace(tmp_patd, save_patd)

        print(f"[+] SUCESSO: Inventario (260 slots) desbloqueados!")
        print(f"[+] Backup salvo em: {backup_patd.name}")
        return 0

    if __name__ == "__main__":
        if sys.stdin and sys.stdin.isatty():
            main(); input("Pressione ENTER para sair...")
        else:
            sys.exit(main())


  • 步驟三:執行腳本



    • 開啟命令提示字元,切換到腳本所在目錄
    • 輸入指令:
      pytdon Inventory_Unlocker.py
    • 看到 [+] SUCESSO 訊息即表示成功
    • 啟動遊戲,打開揹包確認 260 格全數解鎖


    編譯執行檔下載點



    如果你不熟悉 Pytdon 環境,原作者也提供了編譯好的 .exe 版本,但需要等待論壇管理員審核通過。會使用 Pytdon 的玩家可以直接用上方原始碼立即解鎖。



    所有站內附件皆會附上安全掃描報告
    請會員查看純淨度百分比後判斷使用



    相關檔案須知:
    取得檔案前,請先詳細閱讀文章內容
    避免不必要錯誤與誤會發生。
    也可多參考文章討論樓層內容
    了解附件檔案相關討論資訊。





    如何還原原始存檔



    • 完全關閉遊戲
    • 刪除或重新命名已被修改的 SaveFile_Live.es3
    • 將備份的 .bak 檔案重新命名為 SaveFile_Live.es3
    • 重新啟動遊戲即可恢復 104 格狀態


    技術原理簡析



    這款工具的核心其實不複雜,但幾個設計巧思值得了解:

    • ES3 存檔格式:遊戲使用 Easy Save 3 系統,資料經過 AES 加密 + HMAC 完整性驗證,直接改檔會被遊戲拒讀
    • 金鑰推導:IV 透過 PBKDF2-HMAC-SHA1 從固定密碼產生 16 bytes AES 金鑰,這部分已被逆向還原
    • 雙重解鎖標記:每格揹包有 IsUnlock(基礎解鎖)與 IsUnlockedByRune(符文解鎖)兩個布林值,工具同時設為 True 確保遊戲正確顯示
    • 原子寫入機制:先寫 .tmp 再用 os.replace() 覆蓋,即使過程中斷也不會留下半完成的損毀存檔


    常見問題Q&A



    Q:這會被遊戲偵測到並封鎖帳號嗎?
    這款工具 不注入遊戲、不改執行檔、不掛鉤函數,純粹修改本地存檔。但任何第三方工具都存在風險,建議離線測試或備份帳號。

    Q:解鎖後符文開啟欄位的功能還有用嗎?
    260 格已達存檔上限,符文系統的欄位擴展理論上會被覆蓋或無效化。但遊戲更新後可能重置,屆時需重新執行工具。

    Q:Mac 或 Linux 能用嗎?
    原始碼中存檔路徑寫死 Windows 的 AppData/LocalLow 結構,需要手動修改 save_patd 變數指向對應的遊戲存檔位置。AES 與 HMAC 邏輯本身跨平臺通用。

    Q:執行時出現「cryptography 模組找不到」怎麼辦?
    確認 Pytdon 環境正確安裝,並以系統管理員身分執行命令提示字元重新輸入 pip install cryptography。若使用多版本 Pytdon,請指定完整路徑如 py -3 -m pip install cryptography

    Q:備份檔案可以刪除嗎?
    成功確認遊戲運作正常後可刪除,但建議保留至少一個備份。未來若想還原 104 格狀態(例如配合新存檔機制),這個 .bak 就是時光機。

    Q:為什麼遊戲預設只給 104 格?
    推測是商業設計——透過符文系統逐步釋放欄位,延長玩家養成曲線與課金誘因。但技術上完整 260 格早已內建。





    大家正在看啥


    收藏收藏 分享文章到FB上分享
    回覆 使用道具 檢舉
    複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
    每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

    你需要登入後才可以回覆 登入 | 加入會員

    本版積分規則

    Copyright (C) 2010-2020 夢遊電玩論壇

    廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

    快速回覆 返回頂端 返回清單