Windows網路資料流跟蹤技巧

2021-04-02 02:44:22 字數 1450 閱讀 5235

這個系列相當瑣碎,想到**寫到**,說不定這是第一篇也是最後一篇。同時,這

也不是正式文件,可能僅僅是某次除錯過程中臨時記錄的內容。

這次說說跟蹤445/tcp口上的資料流。445/tcp口上的很多資料流由核心態的驅動直接

處理,並不交給使用者態程式,此時想通過攔截傳統套接字函式跟蹤資料流是沒有意義

的。假設在softice中跟蹤,為了使stack命令的輸出更有可讀性,一般載入如下符號表:

ntoskrnl.nms

tcpip.nms

netbios.nms

netbt.nms

rdbss.nms

mrx**b.nms

srv.nms

下例表示目標ip為192.168.7.151、源ip為192.168.7.166時命中:

:bpx tcpip!tcprcv if *(esp+8)==9707a8c0&&*(esp+c)==a607a8c0

最有意義的事實在於tcpip!tcprcv()是windows系統真正開始處理tcp報文的地方,因

此在tcpip!tcprcv()入口處修改了ip資料區,將影響所有上層處理。比如mrx**b.sys

將從tcpip.sys獲得資料,如果先行在tcprcv()處修改了**b報文,對於mrx**b.sys來

說,它看到的就是修改後的**b報文。

可能你有點奇怪,為什麼我沒有直接根據埠進行過濾。在我的測試環境中,根據端

口進行過濾時容易宕機,所以沒舉相應例子,但你不妨一試。

這次說說跟蹤ip報文處理流程。假設在softice中跟蹤,為了使stack命令的輸出更有

可讀性,一般載入如下符號表:

ntoskrnl.nms

tcpip.nms

下例表示源ip為192.168.7.250、目標ip為192.168.7.151時命中:

:bpx tcpip!iprcvpacket if *(*(esp+8)+c)==fa07a8c0&&*(*(esp+8)+10)==9707a8c0

最有意義的事實在於tcpip!iprcvpacket()是windows系統真正開始處理ip報文的地方,

因此在tcpip!iprcvpacket()入口處修改了ip報文,將影響所有上層處理。

這次說說跟蹤icmp報文處理流程。假設在softice中跟蹤,為了使stack命令的輸出更

有可讀性,一般載入如下符號表:

ntoskrnl.nms

tcpip.nms

下例表示源ip為192.168.7.250、目標ip為192.168.7.151時命中:

:bpx tcpip!icmprcv if *(esp+8)==9707a8c0&&*(esp+c)==fa07a8c0

最有意義的事實在於tcpip!icmprcv()是windows系統真正開始處理icmp報文的地方,

因此在tcpip!icmprcv()入口處修改了icmp報文,將影響所有上層處理。

Windows網路程式設計

1.先總結一些會用到的知識 中計算機都分配一個地址,該地址是一個 32位的數值表示 客戶端和伺服器通訊的時候需要指定一個 ip地址 和埠。ip地址 一般是用 internet標準 點分表示法 像a.b.c.d 一樣指定 的,每一個字母代表一個位元組的數字 十進位制 八進位制 或十六進位制 從左到右分...

windows網路程式設計

winsock是windows系統下利用socket套接字進行網路程式設計的相關函式,是windows下的網路程式設計介面。winsock在常見的windows平臺上有兩個主要的版本,即winsock1和winsock2。編寫與winsock1相容的程式你需要引用標頭檔案winsock.h,如果編寫...

windows網路程式設計

include include include 要使用winsock api,就要包含ws2 32.lib這個庫 pragma comment lib,ws2 32.lib int main int argc,char ar 為埠號賦值 short port if port atoi ar 1 0 ...

Windows 網路憑證

前言 單位內部,員工之間電腦免不了要相互訪問 eg 訪問共享資料夾 這就引出網路憑證的概念,即你用什麼身份訪問對端計算機。實驗環境 建立共享資料夾 winsrv 2008上新建的資料夾sharedata,共享給任何人。任何人都是參與者,即具有讀寫許可權。預設情況下,檔案共享,網路鄰居 可以發現區域網...

Windows網路程式設計雜談

windows網路程式設計雜談 關於bind inaddr any 的具體含義是,繫結到0.0.0.0。此時,對所有的地址都將是有效的,如果系統考慮冗餘,採用多個網絡卡的話,那麼使用此種bind,將在所有網絡卡上進行繫結。在這種情況下,你可以收到傳送到所有有效地址上資料包。例如 sockaddr i...