Chrono Mock
語言繁體中文

下載 Chrono Mock

同一引擎的兩個版本:用於探索的視窗,和用於 CI 的命令列。任意一個解壓縮到哪裡都能執行,無需安裝程式、不寫登錄、不需要系統管理員權限。也可以安裝已簽署的 .msi,供這台電腦上的每個帳戶使用:只在安裝時需要一次系統管理員權限,執行時不需要。

檔案說明大小
ChronoMock-app-win-x64.zip 桌面應用程式,自成一體——無需另外安裝 .NET ~70 MB
ChronoMock-app-win-x64.msi 桌面應用程式和命令列,為這台電腦上的每個帳戶安裝:開始功能表項目,以及 PATH 中的 chrono ~58 MB
ChronoMock-cli-win.zip 僅命令列工具,適用於 CI 與指令碼 ~2.4 MB

執行環境需求

  • Windows 10 或 Windows 11。沒有 macOS 或 Linux 版本——在 Linux 上,libfaketime 已經能把這件事做得很好。
  • 不需要其他任何東西。桌面版自帶執行階段,命令列版則什麼都不帶。
  • 32 位元與 64 位元應用程式都受支援。安裝包兩者都帶,並會選擇與你所指向的應用程式相符的那一個。

ARM64 在 1.0 版之前不在範圍之內,封裝的市集應用程式(UWP 與 MSIX)也不受支援——它們的啟動模型不允許這樣做。

執行方法

解壓縮後,執行 ChronoMock.exe 使用視窗版,或執行 chrono.exe 使用命令列版。第一次工作階段只需要做三個決定:哪個應用程式、哪個時刻,以及時鐘應該跑多快。

# 讓應用程式以 2027 年的最後一秒來執行
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# 同樣的事,但時鐘以每分鐘一天的速度執行
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 --mode x1440

先讀這兩件事

在第一次進行未來日期的工作階段之前,請先備份應用程式的資料目錄。

一個執行在 2028 年的應用程式,會在它存放資料的所有地方寫入 2028 年的日期:資料庫、設定、快取、授權檔。回到真實時間之後,這些值仍然留在那裡。對於帶有授權保護的軟體,這可能是永久性的——「偵測到時鐘回撥,授權已失效」是業界的標準做法,它會嚴格依設計初衷行事。

Chrono Mock 會清理它自己留下的東西,但無法替你測試的那個應用程式善後。

你的防毒軟體可能會示警,這是意料之中的。

改變時間的方式,是把一個小型程式庫注入目標處理序。這是一種合法的、有文件記載的 Windows 技術——惡意程式也會使用它,所以 Microsoft Defender 等軟體可能會對被注入的程式庫示警,甚至直接阻止注入。這是由該技術觸發的誤報。

如果工作階段拒絕啟動、而 Defender 回報了威脅,請排除這個程式庫而不是整個資料夾:在 Windows 資訊安全中選擇檔案,並填入 chrono_hook.dll 的完整路徑。資料夾排除會讓工具用來注入的那個目錄裡的所有內容都不再被掃描。或者,在你有權限這樣做的電腦上執行它。被注入的程式庫由本儲存庫中的程式碼在 GPL-3.0 下建置——你可以自己重新建置。Chromium 與 Electron 模式完全不注入,不受影響。

它留下了什麼

系統裡什麼都不留:沒有常駐的掛鉤,沒有登錄項目,除了三樣它會明確告知你的東西之外,也不會在自己的資料夾以外留下任何內容——工作階段歷程與診斷記錄檔,在工具自己的資料夾無法寫入時會移到 %LOCALAPPDATA%\ChronoMock\;還有,對 Electron 或 Chromium 目標來說,在 %TEMP% 下的一個一次性瀏覽器設定檔,它會在工作階段結束時刪除,如果刪除不了,會在工作階段摘要中回報。

這指的是 zip 套件。安裝程式是例外,並會說明它新增了什麼:Program Files 中的程式、開始功能表項目、電腦 PATH 中的 chrono、「設定」「應用程式」中的一項,以及登錄機碼 HKLM\Software\DonislawDev\Chrono Mock。解除安裝會全部移除,並保留 %LOCALAPPDATA%\ChronoMock\ 不動。另有一個預設關閉的選項會在工作階段期間寫入一個登錄值,並在結束後刪除:--elevated-embedded。

它從不連上網際網路,不需要帳號,也不傳送遙測資料。