用VB实现“木马”式隐形运行程序
在一些系统中,为了特定的目的,经常要求程序隐藏运行,如DCS(分布式控制系统)中的后台监控系统、木马控制程序、源代码防复制等。,以降低被发现、截获和拆解的风险。这类功能模块要求程序不仅不出现在桌面上,而且不允许操作员从任务管理器列表中找到。
程序不可见性原理
对于一个不可见的程序,最基本的要求是:
1.该界面不会出现在桌面上;
2.任务栏中不出现图标;
3.程序名称将从任务管理器列表中消失。
对于上面的第一点,可以将表单的Visible属性设置为False。
要从任务栏中阻止图标,可以将窗体的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 getcurrentprocessidlib " kernel 32 "()as long
'获取当前进程id的声明function
public declare function registerserviceprocess lib " kernel 32 "(byval进程ID为long,byval服务标志为long)long
'在系统中注册当前进程ID函数的声明。
3.在Project1中创建一个新的表单Form1,并设置Form1的属性:
表格1。Visible=False
form1。ShowInTaskBar=False
在代码窗口中添加以下代码:
Private Declare Function getdrivetypelib " kernel 32 " Alias " getdrivetypea "(byval n drive As String)Long
'获取当前驱动器类型函数的声明
Private Declare Function GetVolumeInformation Lib " kernel 32 " Alias " GetVolumeInformation a "(ByVal lproot pathname As String,ByVal lpvolumename buffer As String,ByVal nVolumeNameSize As Long,lpVolumeSerialNumber As Long,lpmaximumcomponentlengentlength,lpFileSystemFlags As Long,ByVal byval nfilename AS LONG)
'获取当前驱动器信息函数的声明
Private subform _ 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 stemp 3 AS String,dflag AS Boolean
Dim strlabel AS String,strtype As String,strc As Long
0条评论