关于软件读取系统时间的问题

我有个专业软件 是破解的 它破解的逻辑是读取系统时间 应该是类似试用期的意思 每次使用的时候 我需要修改系统时间 才能打开 我不想修改系统时间 有没有什么软件可以 让这个软件读取一个虚拟的时间 我记得之前有个RunAsDate好像可以 但是不太好用

20250707 更新 回复的大哥提醒我了 我把链接贴上来 大佬们有空可以帮忙试试看 非常感谢 我在网上找了好多软件都不得行 另外 添加一点 单位里面的电脑是断网的 另外很多软件需要依靠时间 所以修改系统时间可能不太行
链接 我用夸克网盘分享了「SMI5.0」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/46a6c30a551c

用虚拟机. 写一个启动bat. 自动改时间.

写一个 bat 脚本,先修改系统时间,然后执行你的软件,最后改回系统时间,这是最省事的

但这样做有一个问题:会造成软件使用期间电脑上文件的修改时间错乱,这可能会对文件同步等造成很大的影响。

1 个赞

让Deepseek写了个BAT脚本,可行性未知。你可以试试,改改程序路径即可:

@echo off
setlocal enabledelayedexpansion

:: 1. 获取当前精确时间(用于后续计算运行时长)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "start_time=%%a"
set /a start_secs=!start_time:~8,2!*3600 + !start_time:~10,2!*60 + !start_time:~12,2!

:: 2. 设置目标时间(示例:2023-01-01 12:00:00)
set target_date=2023-01-01
set target_time=12:00:00

echo 正在修改系统时间为 %target_date% %target_time%...
date %target_date%
time %target_time%

:: 3. 等待 1 秒(确保时间修改生效)
timeout /t 1 /nobreak >nul

:: 4. 启动目标软件(替换成你的软件路径)
echo 正在启动软件...
start "" /wait "C:\Program Files\YourApp\app.exe"

:: 5. 计算软件运行时长(秒)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "end_time=%%a"
set /a end_secs=!end_time:~8,2!*3600 + !end_time:~10,2!*60 + !end_time:~12,2!
set /a elapsed_secs=end_secs - start_secs

:: 6. 恢复时间 = 原始时间 + 软件运行时长
set /a restore_h=!start_time:~8,2! + elapsed_secs/3600
set /a restore_m=!start_time:~10,2! + (elapsed_secs%%3600)/60
set /a restore_s=!start_time:~12,2! + elapsed_secs%%60

:: 处理进位(例如 70秒 -> 1分10秒)
if !restore_s! geq 60 (
    set /a restore_s-=60
    set /a restore_m+=1
)
if !restore_m! geq 60 (
    set /a restore_m-=60
    set /a restore_h+=1
)
if !restore_h! geq 24 (
    set /a restore_h-=24
)

:: 格式化为 HH:MM:SS
set "restore_time=!restore_h!:!restore_m!:!restore_s!"

:: 恢复日期和时间
echo 正在恢复系统时间...
date !start_time:~0,4!-!start_time:~4,2!-!start_time:~6,2!
time !restore_time!

echo 操作完成!软件运行时长:约 %elapsed_secs% 秒

的确,虚拟机折腾起来比较好。现在太多应用要验证时间了

2 个赞

这玩意最好是软件放出来大家看看有没有更好的办法‘
其次就是各类软件或者写软件、脚本等等来解决。
然后就是做虚拟环境
最后就是写个loader,先更改系统时间,然后启动程序,然后把系统时间自动更回来。

“时光驻留器”,用过的软件里面唯一管用的,不影响系统时间,设置一次永久有效。唯一的问题就是系统会报毒,看你敢不敢用。

  1. RunAsDate等通过注入软件修改时间的软件,只能应对启动的exe就是获取系统时间的exe的情况。(说简单点就是RunAsDate只影响指定exe的时间)如果软件是多进程配合,获取时间的是别的进程/驱动/服务的话,RunAsDate就会失效。
    不过从你的描述看你感觉RunAsDate不好用,也许是因为你的RunAsDate版本有点老了。新的1.41允许附加到多个进程了,并且支持注入了更多的有关dll,应该不至于说不好用。

  2. 通过脚本实现修改时间、启动软件、恢复时间,优点肯定有用,缺点在修改时间到改回正确时间这一段时间,其他软件的文件修改时间会乱掉。

  3. 最稳定的方式就是把软件扔虚拟机里运行,虚拟机里时间永远是老的时间

虚拟机 或者沙盒 可以搞定,或者逆向一下读取时间的那里改成固定值,再或者上面说的bat方法

runasdata 确实不得行 不知道是不是我设置的问题 大佬如果有空方便的话 可以帮我试下 链接我贴上来链接:https://pan.quark.cn/s/46a6c30a551c