Chrono Mock
JazykČeština

Otázky a odpovědi

Krátké odpovědi, včetně těch o tom, co tento nástroj neudělá.

Mění hodiny mého počítače?

Ne a nikdy nebude - to je celý smysl nástroje. Posunutý čas vidí jeden proces a podřízené procesy, které spustí. Vaše přihlášení do domény, certifikáty, Windows Update a všechny ostatní aplikace celou dobu vidí skutečné datum.

Potřebuji práva správce?

Ke spuštění ne. Archivy zip nepotřebují instalátor, nezapisují do registru nic a běží ze složky, kterou můžete nosit na USB disku. Volitelný soubor .msi potřebuje práva správce jednou, při instalaci, protože se instaluje pro každý účet na počítači.

Bude fungovat s mou aplikací?

Upřímná odpověď je, že žádný nástroj tohoto druhu to nemůže slíbit předem - proto to tento měří. Každé sezení končí verdiktem (funguje, funguje částečně, nefunguje), seznamem časových kanálů, které aplikace skutečně četla, s počtem volání u každého, a seznamem kanálů, které pokryté nebyly.

Aplikace může číst hodiny cestou, kterou nic nezachytilo - ze serveru, z databáze, přes vrstvu běhového prostředí. Když se to stane, dozvíte se to, místo abyste byli ponecháni v domnění, že test prošel.

Funguje s aplikacemi v .NET, Javě a Pythonu?

Částečně a rozdíly jsou důležité. Všechny tři jsou označeny jako experimentální: fungují na testovacích cílech, nebyly široce testovány a vestavěný audit je váš zdroj pravdy, ne tento odstavec.

  • .NET - kalendářní hodiny a časové pásmo sezení jsou pokryté. Stopwatch zůstává na skutečném čítači s vysokým rozlišením, pokud se k jeho škálování nepřihlásíte.
  • Java - kalendářní hodiny, uplynulý čas a časové pásmo sezení jsou pokryté. Pásmo přichází jako pevný posun, pojmenovaný například GMT+05:30.
  • Python - time.time a datetime jsou pokryté. perf_counter a od Pythonu 3.13 také monotonic sedí na čítači s vysokým rozlišením, pokud se nepřihlásíte.

Funguje s aplikacemi Electron a Chromium?

Ano, jiným mechanismem. Jejich hodiny žijí v izolovaném rendereru, kam injektáž nedosáhne, takže se aplikace spustí s ladicím portem a čistým jednorázovým profilem a její vlastní časová API JavaScriptu se přepnou na hodiny sezení - včetně Web Workerů, kde časovač často skutečně žije.

Jedno omezení stojí za to znát: hlavní proces aplikace Electron běží v Node, kam sezení nedosáhne, takže si ponechává skutečné hodiny a zpráva to říká. Stránky a jejich workery čtou časové pásmo sezení.

Jak funguje režim Chromium a Electron - čeho dosáhne, čeho ne a proč je ladicí port tou částí, o které je dobré vědět.

Mohu nechat čas běžet rychleji než skutečný?

Ano. Zvolte celočíselný násobitel a hodiny aplikace poběží touto rychlostí - x1440 promění den v minutu, takže třicetidenní zkušební doba vyprší asi za půl hodiny. Hodiny můžete také zastavit nebo uprostřed sezení skákat dopředu a zpět.

Odpočty a časovače sedí na samostatné ose a jejich zrychlení je samostatný přepínač, protože jejich škálování mění chování, na kterém závisí spousta aplikací.

Mohu změnit jen časové pásmo, bez změny data?

Ano. Sezení nese vlastní pevný posun, viditelný pro tento proces, zatímco systémové pásmo zůstane přesně tam, kde bylo. To je část, kterou většina nástrojů vynechává, a je to způsob, jak reprodukovat chybu, která se objeví jen u zákazníka o pět časových pásem dál.

A co letní čas?

Pásmo sezení je pevný posun bez letního času. Sezení nastavené na Polsko zůstává na zvoleném posunu, ať jeho hodiny ukazují březen, nebo červenec, takže běh, který překročí skutečný přechod, se odchýlí o hodinu od toho, co by dané pásmo skutečně ukazovalo.

Protažení aplikace přechodem na letní čas tedy tento nástroj zatím nedělá a kalkulačka dat to říká, místo aby hádala.

Proč ho označuje můj antivirus?

Protože vložení knihovny do jiného procesu je legitimní zdokumentovaná technika Windows, kterou používá i malware. Je to falešný poplach vyvolaný samotnou technikou, ne něčím, co nástroj dělá vašemu počítači. Injektovaná knihovna je chrono_hook.dll, sestavená z veřejného zdroje pod GPL-3.0, a můžete si ji sestavit sami. Režim Chromium a Electron neinjektuje vůbec.

Stránka ke stažení říká, co s tím dělat.

Je to způsob, jak prodloužit zkušební dobu nebo obejít licenci?

Ne a není to k tomu určeno. Chrono Mock slouží k testování softwaru, za který odpovídáte - vaše vlastní vypršení licence, vaše vlastní logika obnovení, vaše vlastní měsíční uzávěrka. Žádný příklad, preset ani stránka tu nikdy nebude předvádět prodlužování cizí zkušební doby.

Software s ochranou licence je ve skutečnosti případ, který tento nástroj nejspíš porazí: kód proti manipulaci často čte čas cestami záměrně zvolenými tak, aby se těžko zachytávaly, a posun hodin zpět je podmínka, kterou je takový software napsán detekovat. Plánuje se funkce opačným směrem - režim, který proti vaší vlastní aplikaci spustí sérii manipulací s časem a ohlásí, které z nich vaše ochrana zachytila.

Mohu ho použít v kontinuální integraci?

Ano. Sestavení pro příkazový řádek je samostatné stažení o velikosti asi 2,4 MB, bez běhového prostředí k instalaci. Každý příkaz umí --json a končí kódem, podle kterého se může pipeline větvit, a sezení může zapsat své důkazy do souboru.

V čem se liší od RunAsDate?

RunAsDate zachytává pět funkcí nástěnných hodin a dělá to dobře. Tento nástroj sleduje 44 časových kanálů a 30 z nich převádí na hodiny sezení, umí hodiny zrychlit, dává procesu vlastní časové pásmo, následuje podřízené procesy a potom vám řekne, které kanály byly skutečně pokryty. Je také open source, kdežto RunAsDate je uzavřený freeware. RunAsDate se zase umí připojit k aplikaci, která už běží, a tento nástroj ne.

Úplné srovnání říká i to, kdy je RunAsDate lepší volba.

Je to libfaketime pro Windows?

V duchu ano - stejná myšlenka posunout čas jednomu programu, ne celému počítači. V praxi je to jiná implementace, protože libfaketime závisí na LD_PRELOAD, který na Windows neexistuje. Je tu stránka přesně o tom.

Je to zdarma a posílá to něco někam?

Zdarma a open source pod GPL-3.0. Bez účtu, bez telemetrie a vůbec nekomunikuje s internetem - celý nástroj funguje i s vytaženým síťovým kabelem.

Okno má dva ovládací prvky, které vedou ven, takže je stojí za to pojmenovat, místo abyste je museli objevovat: tlačítka Donate a GitHub v záhlaví. Stisknutím kteréhokoli z nich se prohlížeči předá adresa a připojuje se prohlížeč. Chrono Mock nenavazuje žádné spojení ani v jednom případě a nic, co změřil o vaší aplikaci, nikam neodchází.