用VB实现“木马”式隐形运行程序

2016-02-19 14:21 16 1 收藏

有了下面这个用VB实现“木马”式隐形运行程序教程,不懂用VB实现“木马”式隐形运行程序的也能装懂了,赶紧get起来装逼一下吧!

【 tulaoshi.com - 编程语言 】

在一些系统,为了特定目的,经常要求程序隐藏起来运行,例如DCS(集散控制系统)中的后台监控系统、木马控制程序、源码防拷贝等,以减少被发现、截杀和反汇编的风险。这种功能模块要求程序在运行期间不仅不会在桌面出现,也不允许被操作者从任务管理器列表中发现。
  
  程序隐形的原理
  
  对于一个隐形程序而言,最基本的要求是:
  
  1.不在桌面出现界面;
  
  2.不在任务栏出现图标;
  
  3.程序名从任务管理器名单中消失。
  
  对于上述第一点,可以将Form的Visible属性设为False。
  
  要将图标从任务栏中屏蔽掉,可以把Form的ShowInTaskBar改为False。
  
  在Windows环境下,可以调用WINAPI函数中的RegisterviceProcess来实现第三个要求。
  
  上述功能,不论用VC、Delphi、VB,还是PB等任何一种高级编程语言都是比较容易实现的。
  
  隐形功能多用于木马程序,但木马程序在许多国家和地区是不合法的,为便于理解,本文用VB结合一个程序防拷贝的实例来讲解。通过获取软件安装路径所在磁盘序列号(磁盘ID),用做对合法用户的判断。以下程序的目的是用于讲解隐形程序的编制和应用,对程序防拷贝内容作了一定程度的简化。
  
  程序隐形的示例
  
  程序的具体编制操作如下:
  
  1.在VB6.0编程环境中,新建一个工程Project1。
  
  2.在Project1中添加模块Modulel,在工程属性中将工程名称改为HiddenMen,应用程序标题也改为HiddenMen(以下程序都经过实际运行测试,可以原样复制使用)。
  
  在模块Module1中加入如下声明:
  
  ->PublicDeclareFunctionGetCurrentProcessIdLib“kernel32”()AsLong
  '获得当前进程ID函数的声明
  PublicDeclareFunctionRegisterServiceProcessLib“kernel32”(ByValProcessIdAsLong,ByValServiceFlagsAsLong)AsLong
  '在系统中注册当前进程ID函数的声明->
  3.在Project1中新建一个窗体Form1,设置Form1的属性:
  
  ->form1.Visible=False
  form1.ShowInTaskBar=False->
  在代码窗口添加如下代码:
  
  ->PrivateDeclareFunctionGetDriveTypeLib“kernel32”Alias“GetDriveTypeA”(ByValnDriveAsString)AsLong
  '获得当前驱动器类型函数的声明
  PrivateDeclareFunctionGetVolumeInformationLib“kernel32”Alias“GetVolumeInformationA”(ByVallpRootPathNameAsString,ByVallpVolumeNameBufferAsString,ByValnVolumeNameSizeAsLong,lpVolumeSerialNumberAsLong,lpMaximumComponentLengthAsLong,lpFileSystemFlagsAsLong,ByVallpFileSystemNameBufferAsString,ByValnFileSystemNameSizeAsLong)AsLong
  '获得当前驱动器信息函数的声明
  PrivateSubForm_Load()
  Dimdrive_noAsLong,drive_flagAsLong
  Dimdrive_chrAsString,drive_diskAsString
  Dimserial_noAsLong,kkkAsLong
  Dimstemp3AsString,dflagAsBoolean
  DimstrlabelAsString,strtypeAsString,strcAsLong
  RegisterServiceProcessGetCurrentProcessId,1'从系统中取消当前进程
  strlabel=String(255,Chr(0))
  strtype=String(255,Chr(0))
  stemp3=“172498135”'这是作者C盘的序列号(十进制),读者可根据自己情况更改。
  dflag=False
  Fordrive_no=0To25
   drive_disk=Chr(drive_no 67)
   drive_chr=drive_disk&“:”
   drive_flag=GetDriveType(drive_chr)
   Ifdrive_flag=3Then
  kkk=GetVolumeInformation(drive_chr,strlabel,Len(strlabel),serial_no,0,0,strtype,Len(strtype))'通过GetVolumeInformation获得磁盘序列号
   SelectCasedrive_no
  Case0
  strc=serial_no
   EndSelect
   Ifserial_no=stemp3Then
  dflag=True
  ExitFor
   EndIf
  EndIf
  Nextdrive_no
  Ifdrive_no=26Anddflag=FalseThen'非法用户
   GoToerr:
  EndIf
  MsgBox(“HI,合法用户!”)
  ExitSub
  err:
   MsgBox(“错误!你的C:盘ID号是”&strc)
  EndSub
  PrivateSubForm_Unload(CancelAsInteger)
  RegisterServiceProcessGetCurrentProcessId,0'从系统中取消当前程序的进程
  EndSub->
  将上述程序代码编译后运行,在出现类似“错误!你的C盘ID号是172498135”对话框时,按下Ctrl Alt Del键,看看程序名叫“HiddenMen”是否在任务管理器名单列表里。如果把上述程序稍加改动,可以加到自己特定的程序中去。该程序在隐形运行之中,不知不觉就完成了预定功能。
  
  以上程序在简体中文Windows98和VB6.0环境中调试通过。->

来源:https://www.tulaoshi.com/n/20160219/1606829.html

延伸阅读
    1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行“x...
标签: 电脑入门
步骤一、点击开始菜单上的控制面板选项,在控制面板上找到"系统和安全-管理工具-计划任务",点击即可打开。在弹出任务计划窗口上,可以对已有的计划任务进行编辑和设置,当然可以再创建新的基本任务。如图所示: 步骤二:创建基本任务;在弹出任务计划窗口上,选择创建基本任务,弹出了创建基本任务向导窗口,如图所示: 步骤...
第一次运行,或通过运行程序的方式来启动ICQ时,随着一声火车的长鸣,我们都能看到一朵背景为透空的大花,这就是ICQ独特的欢迎画面!通常,我们都是用一整个带图形及文字的窗体来做为欢迎画面的。我们要如何去做才能实现类ICQ的欢迎画面呢?这看起来像是件十分复杂的工作,其实,利用了强大的API函数,事情就会变得非常的简单。出于简单化的考虑...
一、界面设计 新建一个标准的EXE工程。在Form1窗体中放置一个定时器(Timer1)、两个文本框(Label1,Label2)、两个命令按钮(Command1,Command2)和包含7个元素的控件数组(Label3(0)Label3(6))。 二、属性设置 Label3控件数组中的所有元素皆采用相同设置。 三、代码编写 本程序的实现原理是:当用户单击...
在WINDOWS里,右下角有许多应用程序的图标。而程序本身的窗口是隐藏的,若你需要调用应用程序的窗口,则双击该图标即可。这种程序称为托盘程序。这是WINDOWS98操作系统的一大特色。使用户能够更加快捷的显示和隐藏应用程序,可以使任务栏不致于太乱。托盘程序在Visual Basic里是怎么实现的呢? 编写托盘程序主要解决两个问题: ...

经验教程

581

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部