原创 ActiveX控件測試工具在VS2008下編譯及使用

編譯TSTCON 最近由於項目需要,要開發一個自定義的ActiveX控件,實驗室一直使用的是VS2008, 測試工具ActiveX Control Test Container(TSTCON)在VS2008中不提供現成的exe,

原创 教程番外1——設備實例與設備類

1 簡述 在教程1中,我們在INF文件中添加了一個自己的設備類,併爲其分配了一個GUID,還定義了註冊表項,先回顧一下INF文件中的相關部分: ; 版本域 [Version] ... Class=HUSTSample ; 我們的

原创 kmdf驅動教程2——驅動程序與應用程序通信

1 簡述 作爲寫在最前面的話,我不會在本教程中專門去介紹KMDF框架、對象、方法等基礎知識,因爲相關資料已經不少,而且文檔中都有,如果讀者不瞭解,應該先去看看相關內容。 驅動程序作爲內核模式的一部分,都是爲我們的應用程序服務的。而

原创 whoami查看用戶權限

在Windows系統中,進程具有訪問令牌,而對象具有安全屬性,如同鑰匙和鎖的關係,只有正確配對纔可以訪問。 新建進程時,進程的訪問令牌從當前用戶處繼承,使用whoami  /PRIV命令可以查看用戶的權限。 這是一個非管理員用戶的權限:

原创 kmdf驅動教程1——從Hello World開始

1 簡述 2 爲什麼選擇Hello World 3 我的驅動開發環境 4 Hello Word驅動源代碼編寫 5 編譯Hello World驅動 6 安裝Hello World驅動 7 調試Hello World驅動 8 總結

原创 Haroopad中文顯示問題

安裝Haroopad之後發現編輯器中輸入的中文字體看不到,而右邊的預覽框中顯示正常。然後把字體調小之後又可以正常顯示。 在“文件”下打開“偏好設置”,選擇編輯器,找到默認主題,點擊編輯,如圖: 可以看到default.css文

原创 OllyDbg消息斷點(unable to read memory of debugged process...)

在OllyDbg給窗口設置消息斷點的時候遇到unable to read memory of debugged process...錯誤,無法設置斷點。 換思路採用如下辦法,我們知道windows程序的消息處理在窗口的回調函數中,消息回調

原创 DUMP文件分析4:棧溢出

前面說到過,棧溢出類型的異常通過編程的方式獲取DUMP可能不成功,因爲棧溢出會破壞SEH(結構化異常處理)框架。實際上,通過DUMP文件來調試棧溢出同樣是困難的,因爲棧溢出本身一般不會造成異常,異常往往發生在棧溢出破壞棧上的數據之後,同時

原创 LIST_ENTRY結構

在Windows驅動相關編程中,會用到該結構。Windows的源代碼中大量使用了該結構。該結構用來組成常見的數據結構——雙鏈表,並且帶有頭部節點。帶頭部節點的鏈表相對於不帶頭部節點的鏈表簡化了一些鏈表操作,主要是插入和刪除。 LIST_E

原创 棧溢出筆記1.3 準備Shellcode

經過1.1和1.2節的講述,我們已經知道了如何更改EIP的值。程序執行函數之後將跳轉到我們設定的位置開始執行,因此,我們需要準備一個自己的程序,接手後面的工作。這是一個什麼樣的程序?是一個C語言編寫的代碼?是一個可直接調用的exe?肯定不

原创 棧溢出筆記1.7 地址問題(2)

1.6節中找到了kernel32.dll的基地址,這一節,來解決第二個重要問題,即解析kernel32.dll的導出表,找到LoadLibraryA和GetProcAddress的地址。 DLL導出的函數信息位於導出表中,因此,首先,要在

原创 棧溢出筆記1.2 覆蓋EIP

1.1節中我們說到可以利用棧溢出來破壞棧中原有的內容,這一節中,我們就來看看如何爭奪到返回地址(EIP),使得我們可以隨意控制它的值,這樣我們就可以控制程序。來看一個經典的程序: 這個程序的get_print函數中定義了一個大小爲11個

原创 進程內存佈局

進程的用戶空間 Windows系統中,系統空間與用戶空間的分界線爲0x80000000,該地址以上爲系統空間,以下爲用戶空間,各佔2GB(默認情況下)。2GB的用戶空間不是全部可訪問的,它被劃分成了以下幾個部分: 用戶空間的兩端各有64

原创 DUMP文件分析2:一個最簡單的DUMP分析示例

本節開始,我將在示例中給大家講述基本的DUMP文件分析方法。讀者應該對Windows系統比較瞭解,同時比較熟悉Windbg。 本節的示例非常簡單,也非常經典,就是常常會遇到的訪問空指針。Windows將進程內存空間的一段範圍設置爲NUL

原创 棧溢出筆記1.9 認識SEH

從本節開始,我們就要研究一些稍微高級點的話題了,如同在1.2節中看到的,Windows中爲抵抗棧溢出做了很多保護性的檢查工作,編譯的程序默認開啓了這些保護。如果我們不能繞過這些保護,那麼我們的Shellcode也就是一個玩具而已,什麼都做