Chrono Mock
言語日本語

Chrono Mock をダウンロード

同じエンジンの 2 つのビルドです。探索用のウィンドウと、CI 用のコマンドラインです。どちらもどこに展開しても実行でき、インストーラー、レジストリへの書き込み、管理者権限は不要です。コンピューター上のすべてのアカウント向けに、署名済みの .msi をインストールすることもできます。管理者権限が必要なのはインストールの 1 回だけで、実行には不要です。

ファイル内容サイズ
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 を実行します。最初のセッションで決めることは 3 つ、どのアプリか、どの時点か、時計をどのくらいの速さで進めるかです。

# アプリを 2027 年の最後の 1 秒であるかのように実行する
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# 同じことを、時計を 1 分で 1 日の速さで進めながら
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 --mode x1440

先に読んでおくべき 2 点

未来の日付で最初にセッションを実行する前に、アプリのデータディレクトリをバックアップしてください。

2028 年で動いているアプリは、データを保存するあらゆる場所、つまりデータベース、設定、キャッシュ、ライセンスファイルに 2028 年の日付を書き込みます。それらの値は、実時間に戻ったあとも残ります。ライセンス保護のあるソフトウェアでは、これは恒久的になりえます。「clock rollback detected, licence invalidated」は業界で標準的な手口であり、設計されたとおりの動作をします。

Chrono Mock は自分の後始末をします。ただし、テストしたアプリの後始末まではできません。

ウイルス対策ソフトが検知することがありますが、想定内です。

時刻は、対象プロセスに小さなライブラリをインジェクトすることでずらします。これは文書化された正当な Windows の手法ですが、マルウェアも使う手法なので、Microsoft Defender などがインジェクトされるライブラリを検知したり、インジェクションそのものをブロックしたりすることがあります。これは手法に反応した誤検知です。

セッションが開始を拒否し、Defender が脅威を報告した場合は、フォルダーではなくライブラリを除外してください。Windows セキュリティでファイルを選び、chrono_hook.dll のフルパスを指定します。フォルダーを除外すると、ツールがインジェクトする元のディレクトリそのものでスキャンが行われなくなってしまいます。または、許可されているマシンで実行してください。インジェクトされるライブラリはこのリポジトリのコードから GPL-3.0 のもとでビルドされており、自分で再ビルドすることもできます。Chromium と Electron のモードはインジェクションをまったく行わないため、影響を受けません。

あとに残るもの

システムには何も残りません。永続的なフックも、レジストリのエントリも、ツール自身のフォルダー以外のものも残しません。例外として、ツールが名前を挙げる 3 つのものがあります。ツール自身のフォルダーに書き込めない場合に %LOCALAPPDATA%\ChronoMock\ へ移るセッション履歴と診断ログ、そして Electron や Chromium を対象にしたときの %TEMP% 下の使い捨てブラウザープロファイルです。このプロファイルはセッション終了時に削除され、削除できなかった場合はセッションの概要で報告されます。

これは zip 版の話です。インストーラーは例外で、追加するものを明示します。Program Files 内のプログラム、スタートメニューの項目、コンピューターの PATH 上の chrono、「設定」「アプリ」の項目、そしてキー HKLM\Software\DonislawDev\Chrono Mock です。アンインストールするとこれらはすべて削除され、%LOCALAPPDATA%\ChronoMock\ はそのまま残ります。もう 1 つ、既定で無効のオプション --elevated-embedded は、セッションの間だけレジストリ値を書き込み、終了後に削除します。

インターネットには一切接続せず、アカウントも持たず、テレメトリも送信しません。