让应用程序从Ctrl-Alt-Del列表中消失
【打印文章】
山东济宁鲁抗医药集团研究所 许振华
---- 在WIN9X 中, 如 果 你 按 下Ctrl-Alt-Del, 就 会 看 到 目 前 打 开 的 应 用 程 序。 现 在 的 一 些 黑 客 程 序 是 从 Ctrl-Alt-Del 列 表 中 看 不 到 的, 那 么 这 是 如 何 实 现 的, 想 使 你 的 程 序 也 被 别 人 看 不 到 吗 ? 下 面 告 诉 是 实 现 的 方 法。
---- 要 实 现 这 一 点, 需 要 将 你 的 程 序 注 册 为 服 务 器(service), 这 可 以 利 用RegisterService API 函 数 将 程 序 的 进 程ID 进 行 注 册 来 实 现。 但 程 序 退 出 时 不 要 忘 记 需 要 使 用 此API 函 数 将 服 务 器 注 册 取 消。 下 面 以VB 程 序 举 例 说 明。
---- 在 窗 体 中 加 入 两 个 按 钮,Command1、Command2, 在 窗 体 的 总 体 声 明 部 分 声 明API 函 数、 需 要 的 常 数 并 编 写 注 册 和 释 放 注 册 的 过 程:
Private Declare Function GetCurrentProcessId _
Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess _
Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess _
Lib "kernel32" (ByVal dwProcessID As Long, _
ByVal dwType As Long) As Long
Private Const RSP_SIMPLE_SERVICE = 1
Private Const RSP_UNREGISTER_SERVICE = 0
Private Sub MakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess
(pid, RSP_SIMPLE_SERVICE)
End Sub
Private Sub UnMakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, _
RSP_UNREGISTER_SERVICE)
End Sub
双击命令按钮1, 写如下代码:
Private Sub Command1_Click()
Call MakeMeService
End Sub
双击命令按钮2, 写如下代码:
Private Sub Command2_Click()
Call UnMakeMeService
End Sub
---- 下 面 就 可 以 运 行 了, 运 行 此 程 序, 单 击 按 钮1, 按 下Ctrl-Alt-Del 键, 在 列 表 中 看 到 你 的 程 序 了 吗 ? 再 单 击 按 钮2, 按 下Ctrl-Alt-Del, 再 看 一 看 发 生 了 什 么 ?
---- 本 程 序 在VB 5.0、WIN98 中 调 试 通 过。
---- 在WIN9X 中, 如 果 你 按 下Ctrl-Alt-Del, 就 会 看 到 目 前 打 开 的 应 用 程 序。 现 在 的 一 些 黑 客 程 序 是 从 Ctrl-Alt-Del 列 表 中 看 不 到 的, 那 么 这 是 如 何 实 现 的, 想 使 你 的 程 序 也 被 别 人 看 不 到 吗 ? 下 面 告 诉 是 实 现 的 方 法。
---- 要 实 现 这 一 点, 需 要 将 你 的 程 序 注 册 为 服 务 器(service), 这 可 以 利 用RegisterService API 函 数 将 程 序 的 进 程ID 进 行 注 册 来 实 现。 但 程 序 退 出 时 不 要 忘 记 需 要 使 用 此API 函 数 将 服 务 器 注 册 取 消。 下 面 以VB 程 序 举 例 说 明。
---- 在 窗 体 中 加 入 两 个 按 钮,Command1、Command2, 在 窗 体 的 总 体 声 明 部 分 声 明API 函 数、 需 要 的 常 数 并 编 写 注 册 和 释 放 注 册 的 过 程:
Private Declare Function GetCurrentProcessId _
Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess _
Lib "kernel32" () As Long
Private Declare Function RegisterServiceProcess _
Lib "kernel32" (ByVal dwProcessID As Long, _
ByVal dwType As Long) As Long
Private Const RSP_SIMPLE_SERVICE = 1
Private Const RSP_UNREGISTER_SERVICE = 0
Private Sub MakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess
(pid, RSP_SIMPLE_SERVICE)
End Sub
Private Sub UnMakeMeService()
Dim pid As Long
Dim reserv As Long
pid = GetCurrentProcessId()
regserv = RegisterServiceProcess(pid, _
RSP_UNREGISTER_SERVICE)
End Sub
双击命令按钮1, 写如下代码:
Private Sub Command1_Click()
Call MakeMeService
End Sub
双击命令按钮2, 写如下代码:
Private Sub Command2_Click()
Call UnMakeMeService
End Sub
---- 下 面 就 可 以 运 行 了, 运 行 此 程 序, 单 击 按 钮1, 按 下Ctrl-Alt-Del 键, 在 列 表 中 看 到 你 的 程 序 了 吗 ? 再 单 击 按 钮2, 按 下Ctrl-Alt-Del, 再 看 一 看 发 生 了 什 么 ?
---- 本 程 序 在VB 5.0、WIN98 中 调 试 通 过。
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】