本工具仅供学习研究使用,旨在帮助理解时间炸弹机制的工作原理。请勿用于任何非法或商业用途。
什么是时间炸弹?
时间炸弹(TimeBomb)是一种时间限制机制。程序启动时检查当前时间是否超过预设的过期时间,超过则拒绝运行。常见于软件试用版、内测版本分发等场景。
工作原理
graph TD
subgraph GEN [生成端 TimeBombGenerator]
A[输入过期时间] --> A2[选择反调试开关]
A2 --> B[加密 + 签名]
B --> C[输出配置文本]
end
C -- 写入 System.cfg --> D
subgraph CLIENT [客户端启动校验]
D[读取配置] --> E{签名校验}
E -- 失败 --> H[弹窗提示 + 终止]
E -- 通过 --> F[解密过期时间]
F --> G{当前时间 vs 过期时间}
G -- 已过期 --> H
G -- 未过期 --> AD{反调试已开启?}
AD -- 是 --> AD2{检测调试器}
AD2 -- 发现 --> H
AD2 -- 未发现 --> I[正常运行]
AD -- 否 --> I
end
使用步骤
第一步:生成过期时间配置
运行 TimeBombGenerator.exe,按提示操作:
- 输入过期时间
- 选择是否开启反调试检测(可选功能)
=== TimeBomb 配置生成器 ===
请输入过期时间 (格式: YYYY-MM-DD HH:MM:SS): 2026-06-30 23:59:59
是否开启反调试检测? (1=开启, 0=关闭, 默认关闭): 1
--- 请将以下内容粘贴到 System.cfg ---
[TimeBomb]
ExpireTime=xxxxxxxxxxxxxxxxxxxxxxxx
ExpireHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AntiDebug=xxxxxxxxxxxxxxxxxxxxxxxx
AntiDebugHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
---
无论选择开启还是关闭,生成器都会输出 AntiDebug 和 AntiDebugHash,必须一起写入配置文件。
第二步:写入配置文件
打开 Bin/System.cfg,将上一步生成的 [TimeBomb] 节完整粘贴到文件末尾。
如果文件中已有 [TimeBomb] 节,直接替换 ExpireTime 和 ExpireHash 两行即可。
第三步:启动验证
正常启动客户端。如果当前时间未超过过期时间,客户端正常运行;否则会弹窗提示并退出。
常见提示信息
| 弹窗提示 |
原因 |
| 打开 System.cfg 失败 |
配置文件不存在或路径错误 |
| 缺少 [TimeBomb] ExpireTime 配置项 |
配置文件中没有 [TimeBomb] 节或缺少 ExpireTime |
| 缺少 [TimeBomb] ExpireHash 配置项 |
缺少 ExpireHash 签名值 |
| HMAC 校验失败,配置可能被篡改 |
ExpireTime 或 ExpireHash 被手动修改过 |
| 客户端已过期 |
当前时间已超过设定的过期时间 |
| 检测到系统时间回拨 |
系统时间被调到了很早以前 |
| AntiDebug HMAC 校验失败,配置可能被篡改 |
AntiDebug 或 AntiDebugHash 被手动修改过 |
| 缺少 [TimeBomb] AntiDebug 配置项 |
配置文件中没有 AntiDebug 字段 |
| 缺少 [TimeBomb] AntiDebugHash 配置项 |
缺少 AntiDebugHash 签名值 |
| 检测到调试器,请关闭后重试 |
开启了反调试且检测到调试器附加 |
注意事项
- 每次修改过期时间都必须用工具重新生成,不能手动改配置文件中的值
ExpireTime 和 ExpireHash 必须配对使用,缺一不可
- 时间格式严格为
YYYY-MM-DD HH:MM:SS,年份范围 1970-2099
- 如需延长有效期,重新运行工具生成新配置覆盖即可
- 反调试功能开启后,客户端会在启动时和运行期间持续检测调试器,发现即终止
AntiDebug 和 AntiDebugHash 同样是加密的,不能手动修改
工具下载
|