用VB实现程序的隐形

2016-02-19 14:20 106 1 收藏

下面是个超简单的用VB实现程序的隐形教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

用VB实现程序的隐形

  在一些系统,为了特定目的,经常要求程序隐藏起来运行,例如DCS(集散控制系统)中的后台监控系统、木马控制程序、源码防拷贝等,以减少被发现、截杀和反汇编的风险。这种功能模块要求程序在运行期间不仅不会在桌面出现,也不允许被操作者从任务管理器列表中发现。
  
  程序隐形的原理
  
  对于一个隐形程序而言,最基本的要求是:
  1.不在桌面出现界面;
  2.不在任务栏出现图标;
  3.程序名从任务管理器名单中消失。
  
  对于上述第一点,可以将Form的Visible属性设为False。
  要将图标从任务栏中屏蔽掉,可以把Form的ShowInTaskBar改为False。
  在Windows环境下,可以调用WINAPI函数中的RegisterviceProcess来实现第三个要求。
  上述功能,不论用VC、Delphi、VB,还是PB等任何一种高级编程语言都是比较容易实现的。
  
  隐形功能多用于木马程序,但木马程序在许多国家和地区是不合法的,为便于理解,本文用VB结合一个程序防拷贝的实例来讲解。通过获取软件安装路径所在磁盘序列号(磁盘ID),用做对合法用户的判断。以下程序的目的是用于讲解隐形程序的编制和应用,对程序防拷贝内容作了一定程度的简化。
  
  程序隐形的示例

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  
  程序的具体编制操作如下:
  
  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”(ByVallpRootPathNameAs

  String,ByVallpVolumeNameBufferAsString,ByValnVolumeNameSizeAsLong,lpVolumeSerialNumberAsLong,

  lpMaximumComponentLengthAsLong,lpFileSystemFlagsAsLong,ByVallpFileSystemNameBufferAsString,ByVal

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  nFileSystemNameSizeAsLong)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/1606752.html

延伸阅读
你是否已厌倦机上的屏幕保护程序,而又苦于难找到令自己满意的。不急,“自己动手,丰衣足食”,你自己就可以制作精美的屏幕保护程序,只要你稍有VB编程知识。下面我们就用VB来编写一个介绍自己家人的屏幕保护程序。 1、获取屏保图片: 从你家人的相片中,挑出你选定要作为图片的,用扫描仪扫进你的电脑中,保存为“*.bmp”格式。如果...
在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘进行查找。 下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件...
一、WindowsCGI ----通用网关接口CGI是服务器与应用程序之间的接口,在编写HTML文件时可结合其他程序语言使客户通过浏览器将数据输入到文件里,经服务器处理后转送给客户或记录在服务器的数据库中。任何一种程序设计语言写的程序,若可在服务器主机上运行并可用CGI接口来传递数据,就可作为CGI应用程序,这种语言可被称为CGI程序语言或脚本...
使用Visual Basic 5.0很容易建立屏幕保护程序。实际上任何VB应用程序都可以作为屏幕保护程序来运行,只是有的程序更适于作为屏幕保护程序。要想使自己的应用程序成为Windows环境中屏幕保护程序,需要将该程序作为屏幕保护程序来编译。具体方法是:从File 菜单上选定Make EXE File,在Make EXE File对话框中作以下改动:不再建立带扩展名为E...
三、CGI编程实例 本节将用VB编写一个处理主页客户留言簿的CGI程序。除了要调用本文前面所介绍的Win32API函数外,程序中还调用了Win32API函数GetTempFileName()来获得一个唯一的临时文件名。程序中的函数UrlDecode()用来对客户端的输入进行URL译码。函数GetCgiValue()则用来分解字符串,根据表单元素的NAME属性获取其VALUE值,并调用Ur...

经验教程

281

收藏

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