国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用VB實現程序的隱形

2019-11-18 17:42:09
字體:
來源:轉載
供稿:網友
用VB實現程序的隱形

在一些系統,為了特定目的,經常要求程序隱藏起來運行,例如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”(ByVallpRootPathNameAs

String,ByVallpVolumeNameBufferAsString,ByValnVolumeNameSizeAsLong,lpVolumeSerialNumberAsLong,

lpMaximumComponentLengthAsLong,lpFileSystemFlagsAsLong,ByVallpFileSystemNameBufferAsString,ByVal

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環境中調試通過。

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大厂| 拜城县| 常山县| 民丰县| 武义县| 龙山县| 防城港市| 沽源县| 肇州县| 陈巴尔虎旗| 紫金县| 昆山市| 陇川县| 钦州市| 台安县| 会同县| 壶关县| 太康县| 蓬安县| 崇文区| 五寨县| 昆明市| 资中县| 图木舒克市| 永仁县| 临高县| 宝清县| 壶关县| 白玉县| 镇赉县| 晴隆县| 六安市| 时尚| 张家港市| 阿克| 浙江省| 和林格尔县| 高密市| 溆浦县| 吉安县| 夏津县|