在一些系统,为了特定目的,经常要求程序隐藏起来运行,例如DCS(集散控制系统)中的后台监控系统、木马控制程序、源码防拷贝等,以减少被发现、截杀和反汇编的风险。这种功能模块要求程序在运行期间不仅不会在桌面出现,也不允许被操作者从任务管理器列表中发现。
程序隐形的原理
对于一个隐形程序而言,最基本的要求是:
1. 不在桌面出现界面;
2. 不在任务栏出现图标;
3. 程序名从任务管理器名单中消失。
对于上述第一点,可以将Form的Visible属性设为False。
要将图标从任务栏中屏蔽掉,可以把Form的ShowInTaskBar改为False。
在Windows环境下,可以调用WIN API函数中的RegisterviceProcess来实现第三个要求。
上述功能,不论用VC、Delphi、VB,还是PB等任何一种高级编程语言都是比较容易实现的。
隐形功能多用于木马程序,但木马程序在许多国家和地区是不合法的,为便于理解,本文用VB结合一个程序防拷贝的实例来讲解。通过获取软件安装路径所在磁盘序列号(磁盘ID),用做对合法用户的判断。以下程序的目的是用于讲解隐形程序的编制和应用,对程序防拷贝内容作了一定程度的简化。
程序隐形的示例
程序的具体编制操作如下:
1. 在VB6.0编程环境中,新建一个工程Project1。
2. 在Project1中添加模块Modulel,在工程属性中将工程名称改为HiddenMen,应用程序标题也改为HiddenMen(以下程序都经过实际运行测试,可以原样复制使用)。
在模块Module1中加入如下声明:
Public Declare Function GetCurrentProcessId Lib “kernel32” () As Long
’获得当前进程ID函数的声明
Public Declare Function RegisterServiceProcess Lib “kernel32” (ByVal ProcessId As Long, ByVal ServiceFlags As Long) As Long
’在系统中注册当前进程ID函数的声明
3. 在Project1中新建一个窗体Form1,设置Form1的属性:
form1.Visible=False
form1.ShowInTaskBar=False
在代码窗口添加如下代码:
Private Declare Function GetDriveType Lib “kernel32” Alias “GetDriveTypeA” (ByVal nDrive As String) As Long
’获得当前驱动器类型函数的声明
Private Declare Function GetVolumeInformation Lib “kernel32” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
’获得当前驱动器信息函数的声明
Private Sub Form_Load()
Dim drive_no As Long, drive_flag As Long
Dim drive_chr As String, drive_disk As String
Dim serial_no As Long, kkk As Long
Dim stemp3 As String, dflag As Boolean
Dim strlabel As String, strtype As String,strc As Long
RegisterServiceProcess GetCurrentProcessId, 1 ’ 从系统中取消当前进程
strlabel = String(255, Chr(0))
strtype = String(255, Chr(0))
stemp3 = “172498135” ’这是作者C盘的序列号(十进制),读者可根据自己情况更改。
dflag = False
For drive_no = 0 To 25
drive_disk = Chr(drive_no + 67)
drive_chr = drive_disk & “:\”
drive_flag = GetDriveType(drive_chr)
If drive_flag = 3 Then
kkk = GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype, Len(strtype)) ’通过GetVolumeInformation获得磁盘序列号
Select Case drive_no
Case 0
strc = serial_no
End Select
If serial_no = stemp3 Then
dflag = True
Exit For
End If
End If
Next drive_no
If drive_no = 26 And dflag = False Then ’非法用户
GoTo err:
End If
MsgBox (“HI,合法用户!”)
Exit Sub
err:
MsgBox (“错误!你的C:盘ID号是” & strc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
RegisterServiceProcess GetCurrentProcessId, 0 ’从系统中取消当前程序的进程
End Sub
将上述程序代码编译后运行,在出现类似“错误!你的C盘ID号是172498135”对话框时,按下Ctrl+Alt+Del键,看看程序名叫“HiddenMen”是否在任务管理器名单列表里。如果把上述程序稍加改动,可以加到自己特定的程序中去。该程序在隐形运行之中,不知不觉就完成了预定功能。
以上程序在简体中文Windows 98和VB 6.0环境中调试通过。
分享到:
- 2008-01-11 08:56
- 浏览 1244
- 评论(0)
- 论坛回复 / 浏览 (0 / 3033)
- 查看更多
相关推荐
vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb杀木马软件源代码vb...
vb6.0制作。可以设定某程序到某一时间运行。但暂时只能添加单一程序。就是指运行时不能设定多个任务。但可以运行多个本程序。ps:后来又添加了一个回车触发添加的函数。但没有必要再上传了。把那个函数代码写在下面,...
在"VB课程设计报告及运行程序"中,我们可以推测这是一份包含VB编程项目的工作成果,包括了两大部分:报告和实际的运行程序。报告部分通常会详细阐述项目的背景、目的、设计思路、实现过程、功能介绍以及可能遇到的...
VB编程源代码 15在关闭程序对话框中隐藏运行程序名称VB编程源代码 15在关闭程序对话框中隐藏运行程序名称VB编程源代码 15在关闭程序对话框中隐藏运行程序名称VB编程源代码 15在关闭程序对话框中隐藏运行程序名称VB...
3. 动态增减控件:说明了如何在VB程序运行期间动态地添加或删除控件,这对于制作可定制的用户界面非常有用。 4. 设计聚焦框程序:这部分讲述了如何制作让用户能够聚焦在特定区域的程序,这对于提高用户体验很重要。...
在VB程序运行列表中,我们通常会遇到一些关键的概念和过程,这些都是理解和编写VB程序的基础。 1. **事件驱动编程**:VB的核心编程模式是事件驱动,这意味着程序的执行基于用户与界面元素的交互,如按钮点击、窗口...
在VB(Visual Basic)编程中,检测一个程序是否在运行或者一个文件是否正在被占用是一项常见的任务,这对于实现某些功能,比如防止多个实例同时运行、管理文件操作等至关重要。下面我们将详细探讨如何在VB中实现这些...
本主题聚焦于一个特定的应用:使用VB来实现三维CAD(计算机辅助设计)绘图程序的源代码。下面将详细探讨这个领域的相关知识点。 首先,让我们了解VB的基本概念。VB是基于事件驱动的编程环境,它使用Basic语言语法,...
在VB(Visual Basic)编程环境中,建立文件运行程序是指创建一个能够执行特定文件或操作的程序。这个过程涉及到了VB的基础语法、文件操作以及系统进程的控制。在本篇文章中,我们将深入探讨如何使用VB来实现这一功能...
本教程将深入讲解如何使用VB来实现这一功能。 1. **托盘图标的概念** 托盘图标是Windows操作系统中的一个特性,允许程序在任务栏通知区域显示一个小图标,用户可以通过点击这个图标与程序交互。这对于后台运行或者...
【脚本木马查杀工具VB源码】是一款基于Visual Basic编程语言开发的软件,用于检测和清除系统中的脚本病毒或木马。VB(Visual Basic)是微软公司推出的一种面向对象的、可视化编程工具,它以其易学易用的特点在编程界...
通过上述代码示例,我们可以有效地实现VB程序的单实例运行。这种方法简单有效,适用于大多数情况。当然,还有其他实现方式,例如使用互斥量(Mutex)等更高级的技术手段,但在多数情况下,上面介绍的方法已经足够...
本教程旨在引导学习者从基础到深入理解如何利用VB来编写木马程序。木马,即特洛伊木马,是一种恶意软件,通常伪装成合法软件,诱使用户下载安装,从而获取对用户系统的非法控制。 首先,了解VB的基础语法是编写任何...
综上所述,VB6防止程序二次运行的技术主要包括对现有进程的检查、互斥量的使用以及处理程序关闭的逻辑,这些都旨在确保程序的正确运行和用户数据的安全。通过学习和应用这些知识点,开发者可以创建更加稳定、高效的...
然而,通过结合使用VB6和Windows API,我们完全可以在VB环境中实现高效的多线程编程。 #### 二、多线程基础 在深入探讨VB如何实现多线程之前,有必要先了解一些基本的概念。 **多线程定义**:多线程是指在一个...
【程序老媛出品,必属精品,亲测校正...资源名:VB实现FTP功能程序源码 资源类型:程序源代码 源码说明: 基于vb写的实现ftp功能的程序源码 包含完整代码和注释 非常适合借鉴学习 适合人群:新手及有一定经验的开发人员
在VB(Visual Basic)编程环境中,创建窗体和文本框的下拉及弹出式菜单是一项常见的任务,尤其对于开发用户界面友好的应用程序至关重要。本文将深入探讨如何使用VB来实现这一功能,以及相关的知识点。 首先,让我们...
【VB 实现的Socket编程 聊天程序】 在信息技术领域,Socket编程是一种常见的网络通信技术,它允许应用程序通过网络发送和接收数据。VB(Visual Basic)作为Microsoft开发的一种可视化的编程工具,提供了丰富的功能...
在“周期级程序调试 用VB 实现”这个项目中,我们可以推断开发者利用VB的特性创建了一个工具或应用,用于模拟和调试周期性任务的执行。这种调试工具通常会包含以下几个关键部分: 1. **可视化界面**:VB的优势在于...
资源名:VB.NET实现TCPIP通讯转发功能程序源码 资源类型:程序源代码 源码说明: 最近需要研究一个通讯,监视抓包的工具感觉不是很直观,网上找到的工具只能转发却看不到数据包内容,实在忍不了了。所以自己写了个,...