成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

太慘了!藍屏了,我的文章沒了

開發 前端
Linux上咱們使用tcpdump抓取數據包時,底層使用的核心庫就是libpcap,這是一個開源項目,在Windows上對應的就是winpcap。后來在Win7之后,Windows上使用了更現代化的抓包接口,Wireshark默認使用npcap來代替了傳統的winpcap。

 [[392695]]

在某一個平行宇宙中,各位讀者大大現在看到的應該是一篇關于網絡協議的文章。

這個平行宇宙與當前宇宙的分叉點來源于2個小時前,我點了一下Wireshark抓包,一剎那,藍屏了,那篇文章中近一段時間寫的內容沒了。

我差點拍案而起,WTF!保存啊保存,一個不留神就忘記了。

事情是這樣的:

我想抓一些DHCP協議的數據包,于是將網卡禁用,然后開啟Wireshark,打算把一會兒啟用網卡后的通信過程抓下來。然而等我雙擊網卡開始抓包的一瞬間,藍了!

捶足頓胸之際,不小心瞅見了藍屏界面上藍屏的驅動程序名字:npcap.sys,看來是Wireshark用的抓包驅動有問題呀!

這家伙害我害得這么慘,我不打算放過它,決定找出來到底這程序哪里寫的有問題。

等了幾分鐘,電腦重啟后,在C:\Windows目錄下找到了系統崩潰后產生的核心存儲文件:MEMORY.dmp,這個文件是操作系統崩潰后,Windows將內核的數據、所有進程、線程的執行上下文進行了保存,相當于對“案發現場”進行了“拍照”,用于事后定位問題。

注意,這個得提前設置好才會存儲,默認情況下只會存儲一個很簡單的mini dump文件,不利于問題分析。

祭出內核分析神器:WinDbg,來加載分析dump文件。

因為已經知道崩潰位置位于npcap.sys文件,所以先去簡單了解了一下這個東西。

Linux上咱們使用tcpdump抓取數據包時,底層使用的核心庫就是libpcap,這是一個開源項目,在Windows上對應的就是winpcap。后來在Win7之后,Windows上使用了更現代化的抓包接口,Wireshark默認使用npcap來代替了傳統的winpcap。

既然是開源項目,事情就好辦了,有源碼,有PDB符號文件。

源碼大家知道,PDB文件可能有些人不知道。我們知道C/C++這類語言編譯完成后,所有的函數名字、參數、數據結構定義等信息就丟失了,剩下的都是CPU指令了。那萬一程序出了問題程序員怎么分析呢?這就需要pdb文件了,pdb是程序數據庫的意思,這里面有前面說的那些信息。

在npcap項目的官網,找到了npcap.sys驅動程序對應版本的npcap.pdb文件,下載后,載入WinDbg中,可以看到程序崩潰的函數調用堆棧:

看到了吧,有了PDB文件,連源代碼路徑都顯示出來了。

在GitHub上找到了這個openclos.c文件,定位到最后導致崩潰的函數:NPF_FreeCapData

具體是崩潰在哪一行呢?

回頭看看windbg可以告訴我們具體那一行指令的地址,在上下文的RIP寄存器中可以看到:

看一下這個位置的指令是個啥:

導致藍屏的是這一條指令:

  1. mov rbx, [rdx+18h] 

這條指令的意思是把rdx+18指向位置的內容,讀取到rbx寄存器中。又看了一下崩潰代碼是內存訪問異常,那肯定就是rdx+18這個地址有問題了。

地址有問題,那現在rdx是個啥呢?

我去,居然是0,空指針NULL啊!那不崩潰就怪了!

結合匯編指令和數據結構定義,就能鎖定源碼中的具體位置了:在源碼中的三級指針訪問中,第二級指針的pNBLCopy字段為空!而代碼中又沒有判斷為空指針的情況,就崩潰了~

再次結合函數調用棧和GitHub中的源代碼,可以看到這是在清理釋放抓取到的所有數據包時出現的問題,看下面代碼,這是在一個循環中,挨個釋放每個數據包所占據的資源,所有數據包以雙鏈表形式串聯了起來。

問題分析到這里,我已經按捺不住心里的激動了,難道我發現了一個0day漏洞?要知道,驅動程序空指針bug用的好可是能做內核級攻擊的!一個漏洞都是值不少$的。

剛剛幻想了1秒鐘,馬上清醒過來,等等,我這版本好像不是最新的,我康康最新的版本還有沒有這個問題。

結果潑了我一盆冷水,新的版本,已經增加了對這個指針是否為空的判斷了:

哎!與財富擦肩而過~

本文轉載自微信公眾號「編程技術宇宙」,可以通過以下二維碼關注。轉載本文請聯系編程技術宇宙公眾號。

 

責任編輯:武曉燕 來源: 編程技術宇宙
相關推薦

2020-09-25 08:58:43

推薦系統業務

2024-03-14 10:30:05

緩存場景DEMO

2019-06-18 11:09:54

2020-12-21 07:36:15

緩存數據庫緩存層

2021-05-27 05:29:29

緩存數據Redis

2020-11-09 07:38:19

RedisMySQL互聯網

2020-09-11 14:48:43

RedisMySQL數據

2020-03-20 08:00:32

代碼程序員追求

2017-01-10 09:59:51

2019-09-24 11:36:51

Python支付寶數據

2019-12-06 17:31:30

程序員人生第一份工作設計

2022-01-26 22:22:38

LinuxLinus TorvGitHub

2020-02-06 11:30:08

代碼JavaScript&&

2013-07-17 14:13:08

產品產品失敗

2021-05-08 08:51:28

SpringCloud微服務架構

2020-10-21 12:10:30

訂單號Java代碼

2022-04-11 08:56:27

AIAI算法

2021-01-19 05:27:44

HTTPSECDHE算法

2021-07-02 05:28:30

Windows 11操作系統微軟

2021-09-09 19:19:50

命令Rm 腳本
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区二区三区 | 国产精品成人品 | 中文字幕在线三区 | 欧洲一区在线观看 | 成人欧美一区二区三区黑人孕妇 | 婷婷桃色网 | 色视频网站免费 | 亚洲欧美日本在线 | 精品国产一区二区三区性色 | 男人的天堂久久 | 羞羞视频在线观免费观看 | 欧美在线日韩 | 精品国产欧美一区二区三区成人 | 国产精品毛片 | 一本大道久久a久久精二百 欧洲一区二区三区 | 国产精品久久777777 | 精品少妇一区二区三区日产乱码 | 丝袜天堂 | 电影91久久久 | 国产成人精品一区二区三区视频 | 日日操夜夜操天天操 | av毛片| 美女一级黄 | 欧美在线观看一区 | 亚洲成人av一区二区 | 精品在线一区 | 中国av在线免费观看 | 久久鲁视频 | 欧美成人h版在线观看 | 亚洲免费av一区 | 亚洲欧美综合网 | 久久夜视频 | 亚洲国产一区二区三区 | 羞羞色在线观看 | 精品一区二区av | 羞羞网站免费 | 精品国产一区二区三区性色av | 欧美日韩国产一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 男女精品网站 | 中文字幕亚洲欧美日韩在线不卡 |