解决360时间保护器防止时间被恶意程序修改
功能说明:
本程序是一个基于易语言(EPL)开发的 Windows 桌面应用程序,其主要功能是管理和维护名为"360TimeProt.sys"的内核级驱动程序。该驱动程序的核心作用是锁定系统时间,防止用户或第三方软件随意修改计算机的系统时钟。通过安装此驱动,程序能够启用系统时间保护机制;反之,通过卸载操作则可解除该保护。
一、程序核心功能模块
1. 驱动程序状态检测
在窗口创建完毕时(子程序 `__启动窗口_创建完毕`),程序会自动检查 Windows 系统目录下的驱动文件是否存在,路径为“系统目录/drivers/360TimeProt.sys"。如果检测到文件存在,界面标签会显示“当前状态:TimeProttect 已安装,已禁止修改时间”,同时将“安装”按钮禁用,“卸载”按钮启用。这表明程序具备自动识别当前环境状态的能力,避免重复安装或无法卸载的情况。
2. 驱动程序安装功能
当用户点击主界面上的“安装”按钮(子程序 `_按钮 1_被单击`)时,程序执行以下操作:
- 将内部嵌入的资源数据(可能是驱动程序的二进制文件)写入到系统驱动目录,生成名为"360TimeProt.sys"的文件。
- 调用外部模块中的 `驱动。加载` 函数,注册并启动对应的服务。
- 更新界面提示“安装成功”或“失败”,并根据结果弹出相应的信息框。
该过程涉及文件写入和内核服务注册,需要管理员权限才能正常执行。
3. 驱动程序卸载功能
当用户点击“卸载”按钮(子程序 `_按钮 2_被单击`)时,程序执行逆向操作:
- 调用驱动模块的 `卸载` 方法停止服务。
- 删除系统目录下的驱动文件。
- 重置界面按钮状态和标签文字,提示用户“已成功卸载 TimeProttect",并弹出成功消息框。
这确保了驱动组件可以被彻底清理,不残留注册表项或系统文件。
4. 辅助功能
程序中定义了一个子程序 `.子程序 _图片框 1_鼠标左键被按下`,当用户点击界面上的特定图片控件时,会调用系统默认浏览器打开"360safe 安全论坛”的网页。这可能用于提供技术支持、版本说明或相关社区讨论入口。
二、技术实现原理
1. 注册表与驱动服务注册
在 `驱动集` 程序集中,`InstallDriver` 子程序展示了驱动安装的核心逻辑。它通过修改 Windows 注册表来创建服务项,具体路径为 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\驱动名`。
程序写入的关键注册表值包括:
- `DisplayName`:服务的显示名称。
- `ImagePath`:驱动文件的绝对路径。
- `Start`:设置为 3,代表手动启动模式。
- `Type`:设置为 1,代表内核驱动程序。
- `Security`:设置服务的安全描述符,这部分通过初始化代码中解码十六进制字符串得到 `g_szSecurity` 变量,用于配置访问控制列表(ACL)。
2. 系统服务管理器(SCM)交互
`CreateDriver` 子程序使用了 Windows API(如 `OpenSCManagerA`、`OpenServiceA`、`ControlService`)来直接与服务控制管理器交互。这是管理 Windows 服务的标准方式,允许程序查询服务状态、停止服务或创建新服务实例。虽然提供的代码片段在此处截断,但可以看出其意图是确保服务处于正确的运行状态。
3. 资源提取与数据处理
在 `程序集 1` 的启动初始化代码中,有一段复杂的十六进制字符串处理逻辑。它将硬编码的十六进制序列替换掉前缀,合并为空字符串,再转换为字节集赋值给全局变量 `g_szSecurity`。这段数据实际上是 Windows 对象的安全描述符的二进制表示,用于限制哪些用户或进程可以访问该驱动服务,通常是为了增强安全性,防止普通用户篡改驱动配置。
三、程序架构分析
1. 依赖库
程序依赖于 `eAPI` 扩展库(可能用于封装 API 调用)和 `shell` 库(可能用于 ShellExecute 打开网页等操作)。此外,还引入了一个独立的 `驱动集` 程序集,实现了模块化开发,将核心的驱动安装逻辑与主界面逻辑分离,便于维护。
2. 变量与数据结构
- 程序使用 `.程序集变量 驱动` 来实例化驱动管理类对象,表明采用了面向对象或类库的方式管理驱动生命周期。
- 使用了局部变量和临时变量进行路径拼接、文本处理和状态判断。
3. 错误处理
在安装和卸载过程中,程序包含了一定的错误提示机制。例如,如果写入文件或加载服务失败,会显示“失败”信息框并更新标签状态;如果安装成功,则显示“成功”信息框。这有助于用户了解操作的具体结果。
四、应用场景与安全性说明
该工具显然是针对特定的安全组件设计的。从文件名 `360TimeProt.sys` 和关联网址来看,它与 360 安全卫士等产品的时间防篡改功能有关。在实际使用中,此类驱动常用于防止恶意软件修改系统时间以绕过许可证验证或日志审计。
对于开发者而言,理解此代码有助于学习如何在易语言中调用底层系统 API 进行驱动注册。对于普通用户,它是一个便捷的工具包,用于显式地开启或关闭这一层级的时间保护功能,尤其是在遇到系统时间异常或被锁定的情况下进行调试。
五、总结
综上所述,这是一个专注于系统内核驱动管理的实用小工具。它通过图形化界面封装了复杂的驱动安装、注册表编辑和服务控制操作。其核心价值在于提供了对 `360TimeProt.sys` 驱动的生命周期管理能力,确保了系统时间防护功能的可控性。代码结构清晰,分为界面交互层、业务逻辑层和底层驱动管理层,体现了易语言在系统工具开发中的典型应用模式。
======窗口程序集1
| |
| |------ _图片框1_鼠标左键被按下
| |
| |------ __启动窗口_创建完毕
| |
| |------ _按钮2_被单击
| |
| |------ _按钮1_被单击
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |
======驱动集
| |
| |------ InstallDriver
| |
| |------ CreateDriver
| |
| |------ StartDriver
| |
| |------ StopDriver
| |
| |------ RemoveDriver
| |
| |------ 十六进制到字节集
| |
| |------ 十六到十
| |
| |
======调用的Dll
| |
| |---[dll]------ PathIsDirectory
| |
| |---[dll]------ DeviceIoControl
| |
| |---[dll]------ OpenSCManagerA
| |
| |---[dll]------ CreateServiceA
| |
| |---[dll]------ CloseServiceHandle
| |
| |---[dll]------ StartServiceA
| |
| |---[dll]------ DeleteService
| |
| |---[dll]------ OpenServiceA
| |
| |---[dll]------ ControlService
| |
| |---[dll]------ 取WIN目录
| |
| |---[dll]------ GetLastError
| |
| |---[dll]------ 十六转十
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。