軟體保護之殺死Crack相關進程

來源:互聯網
上載者:User
進程 軟體保護之殺死Crack相關進程

     
             屠恩海(SunHai)

   開發工具:Microsoft Visual Studio .NET 2003
   作業系統:Windows XP



  程式開發三個永恒的主題是:
  一.程式的功能及創意
  二.程式的推廣
  三.程式的保護
  
  理論上說,不存在不能被Crack的程式。所謂的防Crack,只是增加Crack的難度而已。



                 用Process類管理進程

  Process 類提供對本地和遠程進程的訪問並使您能夠啟動和停止本地系統進程。

  Process 組件提供對正在電腦上啟動並執行進程的訪問。用最簡短的話來說,進程就是當前啟動並執行應用程式。線程是作業系統向其分配處理器時間的基本單位。線程可執行進程的任何一部分代碼,包括當前由另一線程執行的部分。

  對於啟動、停止、控制和監視應用程式等任務, Process 組件是很有用的工具。使用 Process 組件,可以擷取當前啟動並執行進程的列表,或者啟動新的進程。 Process 組件用於訪問系統進程。初始化 Process 組件後,可使用該組件來擷取有關當前啟動並執行進程的資訊。此類資訊包括線程集、載入的模組(.dll 和 .exe 檔)和效能資訊(如進程當前使用的記憶體量)。

  如果在系統中用引號聲明了一個路徑變數,則在啟動該位置中的任何進程時,必須完全限定該路徑。否則,系統將找不到該路徑。例如,如果 c:\mypath 不在您的路徑中,而您使用引號添加它( path = %path%;"c:\mypath" ),則在啟動 c:\mypath 中的任何進程時,您必須完全限定它們。

  進程組件同時擷取有關一組屬性的資訊。 Process 組件擷取有關任一組的一個成員的資訊後,它將緩衝該組中其他屬性的值,並且在您調用 Refresh 方法之前,不擷取有關該組中其他成員的新資訊。因此,不保證屬性值比對 Refresh 方法的最後一次調用更新。組細分與作業系統有關。

  系統進程在系統上由其進程標識符唯一標識。與許多 Windows 資源一樣,進程也由其控制代碼標識,而控制代碼在電腦上可能不唯一。控制代碼是表示資源標識符的一般術語。即使進程已退出,作業系統仍保持進程控制代碼,該控制代碼通過 Process 組件的 Handle 屬性訪問。因此,可以擷取進程的管理資訊,如 ExitCode (通常,或者為零表示成功,或者為非零錯誤碼)和 ExitTime 。控制代碼是非常有價值的資源,所以控制代碼泄漏比記憶體流失危害更大。                   
   


                 自動停止Crack有關進程

     我們可用Process 類檢測進程,發現Crack有關進程,即作出相應措施。比如停止Crack相關進程,退出軟體,給出警告,把正式版變為試用版……(你可不要告訴我你會調用Format D:)。

  可通過兩種方法利用 Process 組件停止進程。使用哪種方法取決於所停止的進程的類型:

如果進程有圖形化使用者介面,則調用 CloseMainWindow 方法。該方法向進程的主視窗發送一個關閉請求,其行為與從使用者介面中選擇“關閉”命令相同。使用該方法使目標程式有機會在清除操作中提示使用者儲存任何沒有儲存的資料。
如果進程沒有使用者介面,則調用 Kill 方法。 警告 調用 Kill 方法將在不提示儲存更改的資料的情況下,立即停止進程。任何沒有儲存的資料將丟失。
  我把Crack相關進程分為四類:
   反編譯
   跟蹤調試
   監視
   其他

   只有真正的Crack高手才真正懂得如何防Crack。我們首先要知道常見的Crack相關軟體及其進程名,特別是.Net下的Crack相關軟體。我並不懂Crack,這裡只列出我所掌握的一些情況,希望大家一起來補充完善。

  這裡主要用到 Process.MainWindowTitle 屬性擷取進程的主視窗標題。

    [Visual Basic] Public ReadOnly Property MainWindowTitle As String   
  
  僅當進程有圖形介面時,該進程才具有與其關聯的主視窗。如果關聯進程沒有主視窗(因而 MainWindowHandle 為零),則 MainWindowTitle 為空白字串 ("")。如果剛啟動了一個進程,並且想使用其主視窗標題,則請考慮使用 WaitForInputIdle 方法讓進程完成啟動,從而確保建立了主視窗控制代碼。否則,系統將引發異常。
  Windows 98 平台說明: 如果在啟動進程時 ProcessStartInfo.UseShellExecute 設定為 true ,則此屬性在此平台上不可用。

Private Sub close()

  Dim pProcess() As Process 
  pProcess = Process.GetProcesses() '擷取當前所有進程
  Dim All As Integer
  Dim myArray() As String = _
  {"Assembly View", "Anakrino", "Borg", "PEBrowse", "ProcessDasm", "VirtualCode", "Dasm", "IDA", _
   "FrogsICE", "DriverWorkbench", "OllyDbg", "twx", "TRW", "SoftICE", "NTICE", "SICE", _
   "API Monitor", "ApiHooks", "APIS", "API-Log", "APISpy", "ExeSpy", "File Monitor", "RegistryMonitor",    "MemoryMonitor", "Regmon", "Regshot", "RegSnap", "RegSpy", "Res Spy", _
   "crack", "破解", "sn", "SN"}

    For All = 0 To pProcess.Length() - 1
      For Kill As Integer = 0 To myArray.Length - 1
        If InStr(pProcess(All).MainWindowTitle, myArray(Kill).ToString) Then
          pProcess(All).Kill()       '殺死Crack相關進程
          End                '退出軟體。這裡你還可以加上其他措施
        'MsgBox(pProcess(All).MainWindowTitle)
        End If
      Next
    Next



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。