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.
| Plik | Co to jest | Rozmiar |
|---|---|---|
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.