觀察模式
在hook很多應用中,有一類應用最為常用,那就是觀察模式。對於資訊獲取的要求,在很多時候都是非常的重要的功能。在很多時候,我們都需要根據一定量的資訊去判斷如何決策。正如打仗一樣,沒有一定量的有意義的資料,就是摸黑,只能死路一條。
像windows提供的setwindowhook就是典型地為這類應用準備的。而且這也是最普遍的用法。
這個模式的特點是,在事情發生的時候,發出乙個通知資訊。觀察者只可以檢視過程中的資訊,根據自己關心的內容處理自己的業務,但是不可以更改原來的流程。
注入模式
這個模式和觀察模式最大的不一樣的地方在於,注入的**是為了擴充套件原始**的功能業務。外掛程式模式是此類模式的典型案例。
不管瘦核心的外掛程式系統(如eclipse)還是胖核心的外掛程式系統(如delphi、visual studio等ide環境),其對外提供的外掛程式介面都是為了擴充套件本身系統的功能的。
這種擴充套件的應用方式的典型特點,就是新的擴充套件**和原來的**會協調處理同類業務。
還有一些好的例子。我們曾經有乙個應用,就是替換readfile和writefile,用以做到對所有檔案操作的加密工作。這種應用和外掛程式的差異在於被注入方是主動還是被動的。但是都是在完成同一類業務。
替換模式
如果針對應用目的不同,可以叫修復模式或破解模式。前者是為了修改系統中的bug,後者是為了破解原有系統的限制。
比如我在前言中提到的,delphi的vcl中,tobject並沒有提供從介面到物件的轉換服務,如果我們使用了此類模式,就可以讓我們獲得這種非常好的服務。對於乙個設計或實現上有缺陷的原有系統(一般不能直接修改**)來說,hook機制往往是很好的選擇。
這類稱之為修復模式非常好。
很多黑客也使用此種模式,必然替換訪問加密鎖的dll中的匯出表,替換成自己的函式,這樣跳過對軟體的控制**。我們這裡不是重點講述軟體破解,所以不繼續深究其破解原理。但是,可以強調的是,這類應用的難點是,找出函式的引數。
這類模式的特點是,原有的**會被新的**所替換。
前面三個是基本模式,還有很多和實際應用相關的模式。
集權模式
此類模式的出現,大都是為了在全部系統中,統一處理某類事情。它的特點不在於注入的方式,而在於處理的模式。
這個模式,大都應用到某類服務上,比如鍵盤服務,滑鼠服務,印表機服務等等特定服務上。通過統一接管此類服務的訪問,限制或者協調對服務的訪問。
比如鍵盤鎖功能的實現,就是暫時關閉鍵盤的所有應用。
這類模式的特點主要會和特點服務有關聯。
修復模式
替換模式的一種,這裡強調的是其應用的目的是為了修復或擴充套件原有系統的功能。
破解模式
替換模式的一種,這裡強調的是其應用的目的是為了跳過原有系統的一部分**。如加密檢測**,網路檢測**等等。
外掛程式模式
注入模式的一種,在系統的內部直接依靠hook機制進行擴充套件業務功能。
共享模式
這類應用中,經常是為了獲取對方的資料。必然我希望獲取對方系統中,所有字串的值。可以通過替換對方的記憶體管理器,匯出所有字串。
這個應用比較特殊。不過其特點在於,目的是達到系統之間的資料共享。
其實現,可能是觀察模式,也可能是替換模式。
HOOK啟思錄 第三章 HOOK的應用模式
2006年11月27日 23 18 00 觀察模式 在hook很多應用中,有一類應用最為常用,那就是觀察模式。對於資訊獲取的要求,在很多時候都是非常的重要的功能。在很多時候,我們都需要根據一定量的資訊去判斷如何決策。正如打仗一樣,沒有一定量的有意義的資料,就是摸黑,只能死路一條。像windows提供...
HOOK啟思錄 第三章 HOOK的應用模式
觀察模式 在hook很多應用中,有一類應用最為常用,那就是觀察模式。對於資訊獲取的要求,在很多時候都是非常的重要的功能。在很多時候,我們都需要根據一定量的資訊去判斷如何決策。正如打仗一樣,沒有一定量的有意義的資料,就是摸黑,只能死路一條。像windows提供的setwindowhook就是典型地為這...
HOOK啟思錄 前言 HOOK是一種思想
在很多人眼裡,hook都是高階程式設計師才會使用的技術。一年前,我也是。每每看到別人使用了hook技術就很嫉妒。是的,說嫉妒一點都不誇張。剛開始,不知道hook到底是什麼技術。或者說,hook到底是做什麼的。hook的英文是鉤子,但是,說實話,我的中文意識中,怎麼也不能將鉤子和hook劃等同符號。乙...