windows下異常處理

異常的分發和處理時線上程範圍內進行的,異常處理器的註冊也是相對線程而言的。Windows系統中的每個使用者態線程都擁有一個線程環境塊(Thread Environment Block),TEB結構的具體定義。TEB結構的起始處總有一個被稱為線程資訊塊(Thread information Block)的結構,簡稱TIB。TIB的第一欄位ExceptionList記錄的就是用來登記結構化異常處理鏈表的表頭地址,在x86系統中,段寄存器FS總是指向線程的TEB/TIB結構,FS:[0]

如何在非MFC程式中使用MFC類——解決#error : WINDOWS.H already included.

   我想在WinProc函數中使用CFileDialog類,於是#include <afxdlgs.h>以後編譯,出現了以下錯誤:   c:/program files/microsoft visual studio/vc98/mfc/include/afxv_w32.h(14) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include

Windows 檔案系統(1)

在現代作業系統中,檔案系統為存放裝置提供了流方式的資料管理,允許應用程式共用卷的儲存空間,同時又可以獨享不同的資料流。在Windows中,檔案系統提供了一個層次狀的名字空間,並整合了系統的全域名字空間中;檔案對象既是裝置對象的已開啟執行個體的抽象,也代表了檔案系統中一個已開啟的資料流執行個體。Windows

讀書筆記_windows下的混合鉤子(HOOK)_part 2

 讀書筆記_windows下的混合鉤子(HOOK)_part 21.       分析PE檔案下面接著看如果分析PE檔案,從而找到其要匯入的DLL。首先看PE檔案的匯入資料.idata段。.idata段是匯入資料,包括匯入庫和匯入位址名稱表。在WINNT.H中所定義的資料目錄為:// 目錄入口// 匯出目錄#define IMAGE_DIRECTORY_ENTRY_EXPORT 0// 匯入目錄#define IMAGE_DIRECTORY_ENTRY_IMPORT 1//

讀書筆記_windows下的混合鉤子(HOOK)_part 3_HookImportsOfImage函數解析

HookImportsOfImage函數解析以下是_IMAGE_DOS_HEADER的結構,是在winnt.h標頭檔下的,指的是DOS.exe檔案的頭typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header    WORD   e_magic;                     // Magic number    WORD   e_cblp;                      // Bytes on last page

讀書筆記_windows的APIHook技術

首先介紹一下rootkits,rootkits是一種高端的駭客技術,能夠運行在核心態,與殺毒軟體處於同一層級,很難被發現與清除。  在windows系統中,大多數的進程都依賴於3個子系統:Win32,POSIX和OS/2子系統,這些子系統包含了一組良好的說明的API,大多數的程式都依賴與這些API,因此它們都是rootkit的極佳目標。  來看一個應用程式調用FindNextFile函數的過程,FindNextFile是Kernel32.dll匯出的函數,所以應用程式在運行時載入Kernel32

讀書筆記_windows下的混合鉤子(HOOK)_part 5_鉤子的記憶體空間

鉤子的記憶體空間使用者空間的鉤子的問題之一是為了編寫LoadLibrary參數或編寫代碼,鉤子通常必須在遠程進程中分配空間。在核心中存在一個可寫地區,它映射到每個進程的地址空間。另一個技術利用了兩個虛擬位址映射到同一個物理地址這個事實。核心地址0xFFDF0000和使用者地址0x7FFE0000都指向同義物理頁面。該共用地區核心地址是可寫的,但使用者地址則不能寫。利用MDL的方法可以將代碼寫到核心地址並以使用者地址來訪問它。該共用地區的大小是4k,核心佔用其中的一部分,但還可以使用大約3k的空間

讀書筆記_windows核心調試_part2_ 多核啟動過程

 多核啟動過程下面我們看多核處理器的啟動過程,在part

讀書筆記_windows的APIHook技術_part 2

IAT鉤子簡單強大,但缺點是這種鉤子比較容易被發現。另外一方面這種方式經常使用,驅動程式驗證機制就是使用的IAT hook這種方式,還有作業系統在一個稱為DLL轉寄(DLL forwarding)的進程中也用到了IAT hook。所以即使檢測到了IAT hook,但區分良性鉤子和惡意鉤子仍然是困難的。IAT hook的另外一個缺點就是只有當隱式調用DLL時,IAT hook才起作用,而通過LoadLibrary 和GetProcAddress來調用dll時,IAT

讀書筆記_windows核心編程基礎_part 2

 在進行編譯驅動程式時,要對使用的平台進行選擇,包括x86, x64, IA64.X86指的是IA32平台,它是一個intel通用電腦系列的標準編號的縮寫,也標識一套通用的電腦指令集合,X與處理器沒有任何關係它是一個對所有*86系統的簡單的萬用字元定義。採用32位變長指令集,32位寄存器,32位直接定址範圍。X64,有時會稱為“x86-64”,是64位微處理器架構及其相應指令集的一種,也是Intel

Windows下的日誌機制

 對於日誌,大部分人的想法應當和我起初的想法一致,只要寫個函數,在這個函數中開啟一個檔案,把需要記錄的事件資訊寫到這個檔案中。然後在需要記錄日誌的地方調用這個函數。但此時需要考慮的問題有很多,包括檔案名稱的定義,是每次寫日誌都建立一個新檔案還是在一個檔案中寫所有的資訊。如果是同一個檔案如果控制多線程同時寫的問題;還有當記錄檔過大時,如果刪除以前的記錄。讀日誌的方式,包括檢索的功能;安全問題等等。所以不要小看了僅是協助工具功能的日誌機制,但不用擔心,windows已經為我們定義了很完善的日誌架構。

讀書筆記_windows下的驗證機制

常見的測試手段有以下幾種:  黑箱測試  白盒測試  內建自檢(BIST,Built-InSelf-Test),是指在軟體代碼內部構建一些測試功能,這些功能可以在某些情況下執行,或者被自動化的測試工具所調用以發現問題。  壓力測試(Stresstesting),用於測試目標程式在高負載和低資源情況下的工作情況。Windows下的驗證機制能夠類比極端和苛刻的運行環境,以便讓錯誤更容易暴露出來。Windows下的驗證機制包含驅動程式驗證器和應用程式驗證器先來看驅動程式驗證器(Driver

讀書筆記_windows核心調試_part 2_核心對話過程

 核心對話Windows啟動核心調試後,主要做了以下幾個工作1.  建立串連2.  調試器讀取目標系統資訊,初始化偵錯引擎(目標機)。3.  核心偵錯引擎通過狀態變化資訊包通知調試器載入初始模組的偵錯符號(目標機)。4.  調試器端發送中斷包,將目標系統中斷到調試器,互動調試後又恢複執行的過程。5.  因斷點命中,目標系統中斷到調試器的過程。6. 

讀書筆記_windows下的混合鉤子(HOOK)_part 4_使用MDL修改記憶體保護機制

 MDL(Memory Descriptor List),指記憶體描述符表,它包含了該記憶體地區的起始地址、擁有者進程、位元組數量以及標誌。MDL結構定義在ntddk.h中,具體結構如下:Typedef struct _MDL{      Struct _MDL *Next;      CSHORT Size;      CSHORT MdlFlags;      Struct _EPROCESS *Process;      PVOID MappedSystemVa;      PVOID

Windows核心編程的一個小例子

#include "ntddk.h"void Example1Unload(IN PDRIVER_OBJECT pDrvobj){UNICODE_STRING usDosDevName;DbgPrint("Example1: Driver is being unload.\n");RtlInitUnicodeString(&usDosDevName,

Windows訊息佇列(二)

Message Queue(微軟訊息佇列)是在多個不同的應用之間實現相互連信的一種非同步傳輸模式,相互連信的應用可以分佈於同一台機器上,也可以分佈於相連的網路空間中的任一位置。它的實現原理是:訊息的寄件者把自己想要發送的資訊放入一個容器中(我們稱之為Message),然後把它儲存至一個系統公用空間的訊息佇列(Message

Windows CE 6.0的核心傳輸無關層(KITL)分析(2)

 (3)Windows CE 6.0的KITL初始化過程分析在WinCE6.0中,核心調用OEMInit()函數對目標平台進行初始化過程時,需要啟動KITL的支援,但由於OEMInit()函數屬於oal.exe檔案,不能像WinCE5.0那樣直接調用初始化KITL的函數,根據Windows CE 6.0中共用變數或函數的互訪原則(見Windows CE 6.0啟動分析部分),它們只能通過系統定義的OEMGLOBAL和NKGLOBAL兩個結構體來實現,當在編譯選項(Build

Windows CE平台定製

 Windows CE是一個組件化的作業系統,我們可以根據不同的環境設定不同的組件來組合成有針對性的平台,而一個功能往往需要多個組件才能夠實現。Catalog就是實現某個功能的組件集合,每個Catalog Item會包含一個或多個組件,而Catalog Item則需要實現某種功能。當我們的平台需要這個功能是,就將相對應的Catalog Item選入平台中即可。在完成了平台建立的嚮導之後,我們就進入了PB的IDE介面。Catalog Items視圖與Solution Explorer處於同一地區,

WinCE 6.0 KITL 不能使用DM900 網卡驅動修改記錄

 修改理由:由於eboot 和KITL 同時調用 DM9000DBG_Init 這個函數,在eboot 掉用時使用的是沒有經過映射的地址,當鏡像載入完成後,時候的是映射過的地址。  而DM9000DBG_Init

Windows CE 6.0的核心傳輸無關層(KITL)分析(1)

 Windows CE作業系統所設計的核心無關傳輸層(Kernel Independent Transport Layer,簡稱KITL)主要用來方便各種調試服務,它通過將通訊服務協議與硬體傳輸通訊層分開來減少設計硬體傳輸層的麻煩,使開發人員在無需理解資料如何傳送到不同通訊裝置中的情況下,使用不同類型的硬體傳輸連接埠與Platform Builder進行通訊,實現利用Platform Builder的遠程工具對目標裝置進行遠端偵錯。同時,KITL對於核心調試器(Kernel

總頁數: 1462 1 .... 295 296 297 298 299 .... 1462 Go to: 前往
Tags Index:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。