摘要: 在應(yīng)用層,枚舉進(jìn)程及其通信端口一般可以用iphlpapi.dll中提供的函數(shù)來獲取。如獲取Tcp連接,則調(diào)用GetTcpTable或者AllocateAndGetTcpTableFromStack來查詢。這些API都是通過調(diào)用NtDeviceIoControlFile這個(gè)NativeAPI來進(jìn)入內(nèi)核查詢信息的,如果在內(nèi)核用SSDT Hook來掛鉤此函數(shù),從而隱藏特定的IP、端口信息的話,那么在應(yīng)用層,常規(guī)的查詢方法就查不到隱藏的端口了。
本文通過直接向設(shè)備對(duì)象\Device\Tcp發(fā)送IOCTL Code=IOCTL_TCP_QUERY_INFORMATION_EX的命令,直接獲取進(jìn)程,端口信息。本文也同時(shí)實(shí)現(xiàn)了UDP端口的查詢。
具體請(qǐng)參考下面的代碼,使用WinDDK 6001.18001編譯。
閱讀全文
摘要: 最近在項(xiàng)目中需要用到哈希表,要以ip地址構(gòu)造哈希函數(shù)和比較函數(shù)。就去網(wǎng)上找了下相關(guān)的資料,看了下glib中哈希表中的實(shí)現(xiàn)方式,雖然最終沒用這個(gè),但既然找了就順便記錄下來,方便查閱。
哈希表是一種提供key-value訪問的數(shù)據(jù)結(jié)構(gòu),通過指定的key值可以快速的訪問到與它相關(guān)聯(lián)的value值。hash表的一種典型用法就是字典,通過單詞的首字母能夠快速的找到單詞。關(guān)于哈希表的詳細(xì)介紹請(qǐng)查閱數(shù)據(jù)結(jié)構(gòu)的相關(guān)書籍,我這里只介紹glib庫中哈希表的哈希函數(shù)和比較函數(shù)。
閱讀全文
摘要: 枚舉進(jìn)程模塊通常可以使用諸如:CreateToolhelp32Snapshot,Module32First,Module32Next 等"Tool Help Functions"接口來實(shí)現(xiàn), 并且這也是最通用的方法(從Win95就開始支持了), 但是今天我們要介紹的是ntdll.dll導(dǎo)出的未文檔化接口ZwQueryVirtualMemory,。相比前面所介紹的方法,該方法可以檢測出隱藏的模塊(類似IceSword)。
閱讀全文
摘要: 在Windows執(zhí)行體中,通過文件對(duì)象來代表文件,該文件對(duì)象是一種由對(duì)象管理器管理的執(zhí)行體對(duì)象。例如:目錄也是由文件對(duì)象代表的。
內(nèi)核組件通過對(duì)象名來引用文件,即在文件的全路徑前面加\DosDevices。(在Windows 2000及后續(xù)操作系統(tǒng)中,\??等同于\DosDevices)。例如,文件C:\WINDOWS\example.txt的對(duì)象名為\DosDevices\C:\WINDOWS\example.txt。你需要用對(duì)象名來打開文件以獲取句柄。
閱讀全文
摘要: 一種自定義網(wǎng)絡(luò)通信協(xié)議
閱讀全文
摘要: 整理了tcp/ip協(xié)議棧中一些常見的協(xié)議格式結(jié)構(gòu)體定義,如以太網(wǎng)包、arp、ip等
閱讀全文
摘要: SQL——表結(jié)構(gòu)、表數(shù)據(jù)的復(fù)制
閱讀全文
摘要: 大量的系統(tǒng)安全問題是由于薄弱的緩沖處理以及由此產(chǎn)生的緩沖區(qū)溢出造成的,而薄弱的緩沖區(qū)處理常常與字符串操作相關(guān)。c/c++語言運(yùn)行庫提供的標(biāo)準(zhǔn)字符串操作函數(shù)(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的寫入。
基于Windows XP SP1以及隨后的操作系統(tǒng)的Windows DDK版本提供了安全字符串函數(shù)(safe string functions)。這類函數(shù)被設(shè)計(jì)的目的是用來取代相同功能的c/c++標(biāo)準(zhǔn)函數(shù)和其它微軟提供的庫函數(shù)。這類函數(shù)具有以下特征:
每個(gè)函數(shù)以目標(biāo)緩沖區(qū)所占的字節(jié)大小作為其一個(gè)輸入?yún)?shù),因此可以保證在寫入時(shí)不會(huì)超出緩沖區(qū)末端。
每個(gè)函數(shù)的輸出字符串均以NULL結(jié)尾(null-terminate),即使該函數(shù)可能會(huì)對(duì)正確的結(jié)果進(jìn)行截?cái)唷?
所有函數(shù)均有返回值,類型為NTSTATUS,只有返回STATUS_SUCCESS時(shí),操作結(jié)果才正確。
每個(gè)函數(shù)均有兩種類型的版本,按字節(jié)或者按字符數(shù)。例如,RtlStringCbCatW和RtlStringCchCatW。
閱讀全文