Chrono Mock
JęzykPolski

Pobierz Chrono Mock

Dwie wersje tego samego silnika: okno do eksploracji i wiersz poleceń do CI. Rozpakuj którąkolwiek gdziekolwiek i uruchom - bez instalatora, bez wpisów w rejestrze, bez uprawnień administratora. Albo zainstaluj podpisany plik .msi dla każdego konta na komputerze: uprawnienia administratora raz, do instalacji, a do uruchamiania żadne.

PlikCo to jestRozmiar
ChronoMock-app-win-x64.zip Aplikacja okienkowa, samowystarczalna - nie wymaga instalacji .NET ~70 MB
ChronoMock-app-win-x64.msi Aplikacja okienkowa i wiersz poleceń, zainstalowane dla każdego konta na komputerze: wpis w menu Start i chrono w PATH ~58 MB
ChronoMock-cli-win.zip Samo narzędzie wiersza poleceń, do CI i skryptów ~2,4 MB

Czego potrzebujesz

  • Windows 10 albo Windows 11. Nie ma wersji na macOS ani Linuksa - na Linuksie libfaketime robi to od lat i robi to dobrze.
  • Niczego więcej. Wersja okienkowa niesie własne środowisko uruchomieniowe, a wersja konsolowa nie niesie niczego.
  • Aplikacje 32- i 64-bitowe są obsługiwane. Paczka zawiera obie wersje i sama dobiera tę, która pasuje do wskazanej aplikacji.

ARM64 jest poza zakresem do wersji 1.0, a aplikacje pakowane ze Sklepu (UWP i MSIX) nie są obsługiwane - nie pozwala na to ich model uruchamiania.

Uruchamianie

Rozpakuj, a potem uruchom ChronoMock.exe dla okna albo chrono.exe dla wiersza poleceń. Pierwsza sesja to trzy decyzje: która aplikacja, który moment i jak szybko ma iść zegar.

# Uruchom aplikację tak, jakby była ostatnia sekunda 2027 roku
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59

# To samo, z zegarem idącym w tempie doby na minutę
chrono run "C:\apps\test.exe" --at 2027-12-31T23:59:59 --mode x1440

Dwie rzeczy do przeczytania najpierw

Zrób kopię katalogu danych aplikacji przed pierwszą sesją z datą w przyszłości.

Aplikacja działająca w 2028 roku zapisze daty z 2028 wszędzie tam, gdzie trzyma dane: w bazie, w konfiguracji, w pamięci podręcznej, w pliku licencji. Te wartości zostaną tam po powrocie do prawdziwego czasu. Przy oprogramowaniu z ochroną licencji bywa to nieodwracalne - „wykryto cofnięcie zegara, licencja unieważniona" to standardowy wzorzec w branży i zadziała dokładnie tak, jak został zaprojektowany.

Chrono Mock sprząta po sobie. Nie posprząta po aplikacji, którą testujesz.

Program antywirusowy może to zgłosić i jest to spodziewane.

Czas jest przesuwany przez wstrzyknięcie małej biblioteki do procesu celu. To legalna, udokumentowana technika Windows - a zarazem taka, której używa złośliwe oprogramowanie, więc Microsoft Defender i inne mogą zgłosić wstrzykiwaną bibliotekę albo zablokować samo wstrzyknięcie. To fałszywy alarm wywołany techniką.

Jeśli sesja nie chce wystartować, a Defender zgłasza zagrożenie, wyklucz samą bibliotekę, a nie folder: wybierz Plik w Zabezpieczeniach Windows i podaj pełną ścieżkę do chrono_hook.dll. Wykluczenie folderu wstrzymałoby skanowanie dokładnie w tym katalogu, z którego narzędzie wstrzykuje. Albo uruchom je na maszynie, na której wolno ci to zrobić. Wstrzykiwana biblioteka jest zbudowana z kodu w tym repozytorium na licencji GPL-3.0 - możesz ją zbudować sam. Tryb Chromium i Electron w ogóle nie wstrzykuje i nie dotyczy go ten problem.

Co zostaje po nim w systemie

Nic: żadnych trwałych hooków, żadnych wpisów w rejestrze i nic poza własnym folderem, z wyjątkiem trzech rzeczy, które narzędzie samo nazywa - historii sesji i dziennika diagnostycznego, które przenoszą się do %LOCALAPPDATA%\ChronoMock\, gdy własny folder narzędzia nie jest zapisywalny, oraz, dla celu w Electronie lub Chromium, jednorazowego profilu przeglądarki w %TEMP%, kasowanego po zakończeniu sesji i zgłaszanego w podsumowaniu, jeśli skasować się nie dał.

To opisuje archiwa zip. Wyjątkiem jest instalator i mówi, co dodaje: program w Program Files, wpis w menu Start, chrono w PATH komputera, wpis w Ustawieniach, Aplikacje oraz klucz HKLM\Software\DonislawDev\Chrono Mock. Odinstalowanie usuwa to wszystko i zostawia %LOCALAPPDATA%\ChronoMock\ w spokoju. Jeszcze jedna opcja, domyślnie wyłączona, zapisuje wartość w rejestrze na czas sesji i potem ją usuwa: --elevated-embedded.

Nigdy nie łączy się z internetem, nie zakłada konta i nie wysyła telemetrii.