摘要: 在應用層,枚舉進程及其通信端口一般可以用iphlpapi.dll中提供的函數來獲取。如獲取Tcp連接,則調用GetTcpTable或者AllocateAndGetTcpTableFromStack來查詢。這些API都是通過調用NtDeviceIoControlFile這個NativeAPI來進入內核查詢信息的,如果在內核用SSDT Hook來掛鉤此函數,從而隱藏特定的IP、端口信息的話,那么在應用層,常規的查詢方法就查不到隱藏的端口了。
本文通過直接向設備對象\Device\Tcp發送IOCTL Code=IOCTL_TCP_QUERY_INFORMATION_EX的命令,直接獲取進程,端口信息。本文也同時實現了UDP端口的查詢。
具體請參考下面的代碼,使用WinDDK 6001.18001編譯。
閱讀全文
posted @
2010-07-09 18:28 水 閱讀(6003) |
評論 (3) |
編輯 收藏
摘要: 最近在項目中需要用到哈希表,要以ip地址構造哈希函數和比較函數。就去網上找了下相關的資料,看了下glib中哈希表中的實現方式,雖然最終沒用這個,但既然找了就順便記錄下來,方便查閱。
哈希表是一種提供key-value訪問的數據結構,通過指定的key值可以快速的訪問到與它相關聯的value值。hash表的一種典型用法就是字典,通過單詞的首字母能夠快速的找到單詞。關于哈希表的詳細介紹請查閱數據結構的相關書籍,我這里只介紹glib庫中哈希表的哈希函數和比較函數。
閱讀全文
posted @
2010-07-06 17:43 水 閱讀(3842) |
評論 (1) |
編輯 收藏
摘要: 枚舉進程模塊通常可以使用諸如:CreateToolhelp32Snapshot,Module32First,Module32Next 等"Tool Help Functions"接口來實現, 并且這也是最通用的方法(從Win95就開始支持了), 但是今天我們要介紹的是ntdll.dll導出的未文檔化接口ZwQueryVirtualMemory,。相比前面所介紹的方法,該方法可以檢測出隱藏的模塊(類似IceSword)。
閱讀全文
posted @
2010-07-05 16:32 水 閱讀(9576) |
評論 (3) |
編輯 收藏
posted @
2010-05-21 14:23 水 閱讀(834) |
評論 (0) |
編輯 收藏
posted @
2010-05-21 14:13 水 閱讀(1015) |
評論 (0) |
編輯 收藏
摘要: 在Windows執行體中,通過文件對象來代表文件,該文件對象是一種由對象管理器管理的執行體對象。例如:目錄也是由文件對象代表的。
內核組件通過對象名來引用文件,即在文件的全路徑前面加\DosDevices。(在Windows 2000及后續操作系統中,\??等同于\DosDevices)。例如,文件C:\WINDOWS\example.txt的對象名為\DosDevices\C:\WINDOWS\example.txt。你需要用對象名來打開文件以獲取句柄。
閱讀全文
posted @
2009-12-31 15:27 水 閱讀(10249) |
評論 (1) |
編輯 收藏
摘要: 一種自定義網絡通信協議
閱讀全文
posted @
2009-12-31 08:57 水 閱讀(4634) |
評論 (2) |
編輯 收藏
摘要: 整理了tcp/ip協議棧中一些常見的協議格式結構體定義,如以太網包、arp、ip等
閱讀全文
posted @
2009-12-03 11:47 水 閱讀(6883) |
評論 (0) |
編輯 收藏
摘要: SQL——表結構、表數據的復制
閱讀全文
posted @
2009-11-15 15:52 水 閱讀(846) |
評論 (1) |
編輯 收藏
摘要: 大量的系統安全問題是由于薄弱的緩沖處理以及由此產生的緩沖區溢出造成的,而薄弱的緩沖區處理常常與字符串操作相關。c/c++語言運行庫提供的標準字符串操作函數(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的寫入。
基于Windows XP SP1以及隨后的操作系統的Windows DDK版本提供了安全字符串函數(safe string functions)。這類函數被設計的目的是用來取代相同功能的c/c++標準函數和其它微軟提供的庫函數。這類函數具有以下特征:
每個函數以目標緩沖區所占的字節大小作為其一個輸入參數,因此可以保證在寫入時不會超出緩沖區末端。
每個函數的輸出字符串均以NULL結尾(null-terminate),即使該函數可能會對正確的結果進行截斷。
所有函數均有返回值,類型為NTSTATUS,只有返回STATUS_SUCCESS時,操作結果才正確。
每個函數均有兩種類型的版本,按字節或者按字符數。例如,RtlStringCbCatW和RtlStringCchCatW。
閱讀全文
posted @
2009-09-27 14:50 水 閱讀(6375) |
評論 (0) |
編輯 收藏