原创 坐得越久 死得越快

又一項研究顯示,久坐對你的健康是真的、真的、真的非常有害。請買一個可站着工作的桌子吧! 可站着編程的電腦桌 一項對超過20萬個澳大利亞人的研究結果給這樣一個事實又增加了一份活體證明:坐得越久的人死得越快。研究同時還發現,鍛鍊不

原创 驅動對象(DRIVER_OBJECT)

每個驅動程序會有唯一的DRIVER_OBJECT驅動對象與之對應,並且這個DRIVER_OBJECT是在驅動加載時候,被內核中的對象管理器所創建。它作爲驅動一個實例被內核加載,並且內核對一個驅動只加載一個實例。確切的說,是由內核的I/O管

原创 併發和同步

1.併發指多個控制流同時在執行,即可能是真正的併發執行,也可能是分時的併發執行,同步則是保證在併發執行的環境中各個控制流可以有效執行,包括對資源的共享或互斥訪問,以及代碼功能邏輯循序。 2.爲了保護對一個內存單元操作,我們必須使該操作稱

原创 驅動程序是怎麼操作硬件設備的

這裏以CreateFile API 爲例,其他操作設備的API類似。首先應用程序調用CreateFile Api,這個API是由Win32子系統的三大模塊中的Kernel32.dll實現的。CreateFile函數會 調用Ntdll.

原创 潘石屹:26年後他成了總裁我還在挑磚

這是一段多年前的回憶錄,按說早已不算新聞。但這個與億萬富翁潘石屹有關的故事,卻揭示了“富人之所以爲富人,窮人之所以爲窮人”的祕密。對廣大創業者來說,其中的啓示永不過時。 講述這段回憶錄的是一個叫李勇的打工漢。26年前,他和潘石屹在

原创 NT式驅動基本結構

1.對於NT式驅動來說,主要的函數是DriveEntry函數,卸載函數,以及各個IRP的派遣函數 2.驅動加載過程與驅動入口函數(DriverEntry)    NTSTATUS DriveEntry(IN PDRIVER_OBJECT

原创 IRP與派遣函數

1.派遣函數是WINDOWS驅動程序中的重要概念。驅動程序的主要功能是負責處理I/O請求,其中大部分I/O請求時在派遣函數中處理的。 2.用戶模式下所有驅動程序的I/O請求,全部由操作系統化爲一個叫做IRP的數據結構,不同的IRP數據會

原创 windows系統概念

1.從系統啓動一直到內核能夠正常工作,再到用戶登錄到系統,windows系統中的各個組件都要完成相應的初始化任務 2.系統內核接收應用程序的請求,與硬件設備進行通信;另一方面,硬件設備向計算機發送信號,驅動程序收到信號後,與系統 內核一起

原创 寫殼筆記

我的stub是從dll中注入到宿主程序的。當然stub重定位是按照宿主的imagebase進行重定位的,當宿主程序重新啓動不是按原先imagebase加載時,程序是運行不起來的。 解決辦法就是 修改IMAGE_OPTIONAL_HEAD

原创 你最喜歡的程序員漫畫”精選

一個調皮的孩子在課堂上扔紙飛機,被老師抓到後罰在黑板上寫500遍“我以後再也不在教室裏扔紙飛機了(I will not throw paper airplanes in class.)”,於是這個小孩就在黑板上寫了下面一段代碼: 一看就

原创 再多讀一篇文章會怎樣?

再多讀一篇文章會怎樣? 也許跟沒讀一樣。 看起來好像自己提高了,但差不多隻是個表面現象。 你閱讀了如此多的文章,但換來的也許只是一點點的進步。 要想掌握一種技術,你只有一條路——去做。 我想學會視頻編輯,至少是要能成爲一種業餘

原创 Python中下劃線---完全解讀

Python 用下劃線作爲變量前綴和後綴指定特殊變量 _xxx 不能用’from module import *’導入 __xxx__ 系統定義名字 __xxx 類中的私有變量名 核心風格:避免用下劃線作爲變量名的開始。

原创 WinDbg 內核調試常用命令

1. vertarget 命令可以顯示目標系統的基本信息,如系統版本,計算機名,內核基質等 kd> vertargetWindows 7 Kernel Version 7601 (Service Pack 1) MP (1 procs)

原创 WDM式驅動的基本結構

1.對於WDM驅動程序來說,一般都是基於分層。也就是說,完成一個設備操作,至少要由兩個驅動設備共同完成一個是物理設備對象(Physical Device Object)PDO,另一個是功能設備對象(Function Device Obje

原创 驅動筆記

1.對PNP(plug and play )and IRP 處理 ,是NT式驅動和WDM驅動的重大區別之一 2.windows 的I/0 操作死基於異步設計的。也就是線程在發起一個I/0操作的時候,可以不等待這個I/o操作完成。就發起另一