• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    實現程序的隱形

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 10次 | 進入軟件測試論壇討論

    領測軟件測試網 孔祥軍 蘇悅娟  

    在一些系統,為了特定目的,經常要求程序隱藏起來運行,例如DCS(集散控制系統)中的后臺監控系統、木馬控制程序、源碼防拷貝等,以減少被發現、截殺和反匯編的風險。這種功能模塊要求程序在運行期間不僅不會在桌面出現,也不允許被操作者從任務管理器列表中發現。
    程序隱形的原理
    對于一個隱形程序而言,最基本的要求是:
    1. 不在桌面出現界面;
    2. 不在任務欄出現圖標;
    3. 程序名從任務管理器名單中消失。
    對于上述第一點,可以將Form的Visible屬性設為False。
    要將圖標從任務欄中屏蔽掉,可以把Form的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 GetCurrentProcessId Lib “kernel32” () As Long
    ’獲得當前進程ID函數的聲明
    Public Declare Function RegisterServiceProcess Lib “kernel32” (ByVal ProcessId As Long, ByVal ServiceFlags As Long) As Long
    ’在系統中注冊當前進程ID函數的聲明
    3. 在Project1中新建一個窗體Form1,設置Form1的屬性:
    form1.Visible=False
    form1.ShowInTaskBar=False
    在代碼窗口添加如下代碼:  
    Private Declare Function GetDriveType Lib “kernel32” Alias “GetDriveTypeA” (ByVal nDrive As String) As Long
    ’獲得當前驅動器類型函數的聲明
    Private Declare Function GetVolumeInformation Lib “kernel32” Alias “GetVolumeInformationA” (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
    ’獲得當前驅動器信息函數的聲明
    Private Sub Form_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 stemp3 As String, dflag As Boolean
    Dim strlabel As String, strtype As String,strc As Long
    RegisterServiceProcess GetCurrentProcessId, 1 ’ 從系統中取消當前進程
    strlabel = String(255, Chr(0))
    strtype = String(255, Chr(0))
    stemp3 = “172498135” ’這是作者C盤的序列號(十進制),讀者可根據自己情況更改。  
    dflag = False
    For drive_no = 0 To 25
     drive_disk = Chr(drive_no + 67)
     drive_chr = drive_disk & “:\”
     drive_flag = GetDriveType(drive_chr)
     If drive_flag = 3 Then
       kkk = GetVolumeInformation(drive_chr, strlabel, Len(strlabel), serial_no, 0, 0, strtype, Len(strtype)) ’通過GetVolumeInformation獲得磁盤序列號
     Select Case drive_no
       Case 0
       strc = serial_no
     End Select
     If serial_no = stemp3 Then
       dflag = True
       Exit For
     End If
    End If
    Next drive_no
    If drive_no = 26 And dflag = False Then ’非法用戶
     GoTo err:
    End If
    MsgBox (“HI,合法用戶!”)
    Exit Sub
    err:
     MsgBox (“錯誤!你的C:盤ID號是” & strc)
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    RegisterServiceProcess GetCurrentProcessId, 0 ’從系統中取消當前程序的進程
    End Sub
    將上述程序代碼編譯后運行,在出現類似“錯誤!你的C盤ID號是172498135”對話框時,按下Ctrl+Alt+Del鍵,看看程序名叫“HiddenMen”是否在任務管理器名單列表里。如果把上述程序稍加改動,可以加到自己特定的程序中去。該程序在隱形運行之中,不知不覺就完成了預定功能。
    以上程序在簡體中文Windows 98和VB 6.0環境中調試通過。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>