vb實現木馬式隱形運行

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”long

'獲得當前進程id函數的聲明

publicdeclarefunctionregisterserviceprocesslib“kernel32”(byvalprocessidlong,byvalserviceflagslong)long

'在系統中註冊當前進程id函數的聲明

3.在project1中新建一個窗體form1,設置form1的屬性:

bxwx.org=falsbxwx.org=false

在代碼窗口添加如下代碼:

privatedeclarefunctiongetdrivetypelib“kernel32”alias“getdrivetypea”(byvalndrivestring)long

'獲得當前驅動器類型函數的聲明

privatedeclarefunctiongetvolumeinformationlib“kernel32”alias“getvolumeinformationa”(byvallprootpathnamestring,byvallpvolumenamebufferstring,byvalnvolumenamesizelong,lpvolumeserialnumberlong,lpmaximumorgponentlengthlong,lpfilesystemflagslong,byvallpfilesystemnamebufferstring,byvalnfilesystemnamesizelong)long

'獲得當前驅動器信息函數的聲明

privatesubform_load

dimdrive_nolong,drive_flaglong

dimdrive_chrstring,drive_diskstring

dimserial_nolong,kkklong

dimstemp3string,dflagboolean

dimstrlabelstring,strtypestring,strclong

registerserviceprocessgetcurrentprocessid,1'從系統中取消當前進程

strlabel=string(255,chr(0))

strtype=string(255,chr(0))

stemp3=“172498135”'這是作者c盤的序列號(十進制),讀者可根據自己情況更改。

dflag=false

fordrive_no=025

drive_disk=chr(drive_no+67)

drive_chr=drive_disk&“:\”

drive_flag=getdrivetype(drive_chr)

drive_flag=3then

kkk=getvolumeinformation(drive_chr,strlabel,len(strlabel),serial_no,0,0,strtype,len(strtype))'通過getvolumeinformation獲得磁盤序列號

selectcasedrive_no

case0

strc=serial_no

endselect

serial_no=stemp3then

dflag=true

exitfor

end

end

nextdrive_no

drive_no=anddflag=falsethen'非法用戶

gotoerr:

end

msgbox(“hi,合法用戶!”)

exitsub

err:

msgbox(“錯誤!你的c:盤id號是”&strc)

endsub

privatesubform_unload(cancelinteger)

registerserviceprocessgetcurrentprocessid,0'從系統中取消當前程序的進程

endsub

將上述程序代碼編譯后運行,在出現類似“錯誤!你的c盤id號是172498135”對話框時,按下ctrl+alt+del鍵,看看程序名叫“hiddenmen”是否在任務管理器名單列表裏。如果把上述程序稍加改動,可以加到自己特定的程序中去。該程序在隱形運行之中,不知不覺就完成了預定功能。

以上程序在簡體中文windows98和vb6.0環境中調試通過。

上一章書籍頁下一章

super紅客

···
加入書架
上一章
首頁 都市青春 super紅客
上一章下一章

vb實現木馬式隱形運行

%