原创 Windows Hook經驗總結之二:API Hook實踐

前一篇介紹了API Hook的幾種方法,本文則直接以CopyFile爲例採用DLL注入的方法來展示編碼流程。 一個完整的HOOK過程包括四個部分: 1)待注入的DLL 2)DLL注入器 3)目標進程 4)主程序 DLL注

原创 文件系統:FAT12

FAT12是DOS時代使用的文件系統,適用於軟盤等小容量存儲介質。其特點: 小容量,最大爲4.1MB 以簇爲單位,最大簇數4084 每個FAT表項佔12bits,所以稱之爲FAT12 FAT12結構 每個扇區默認512字節;根據

原创 C++回調機制的幾種實現方式

Callback Callback的本質是設置一個函數指針進去,然後在需要觸發某個事件時調用該方法, 比如Windows的窗口消息處理函數就是這種類型。 比如下面的示例代碼,我們在Download完成時需要觸發一個通知外面的事件: ty

原创 文件系統:FAT32

前文介紹了FAT12和FAT16,本文則介紹FAT32。顧名思義,FAT表項佔用32bits即FAT32。其特點: 每個FAT表項佔用32bits 磁盤容量33MB以上 簇數65525以上 單個文件最大爲4GB-1字節 FAT32結構

原创 rsync核心算法介紹及應用探索

Rsync核心算法 Rsync是unix/linux下同步文件的一個高效算法,它能同步更新兩臺計算機的文件與目錄,並查找文件中的不同塊以減少數據傳輸。Rsync的一個重要特性就是隻對變更部分進行傳送。rsync可拷貝、顯示目錄屬性以及拷貝

原创 文件系統:ExFAT

ExFAT也叫FAT64,是微軟專門爲可移動設備設計的。它拋棄了之前FAT(FAT12,FAT16,FAT32)系統的許多內部結構,不再兼容之前的FAT。相比較之前的FAT系統,他有幾個重要的改進。 單個文件大小突破4GB的限制,最大可

原创 Windows Hook經驗總結之四:COM組件Hook原理及實踐

前面已經介紹過API的hook方法及具體實踐,本文則講述COM組件的Hook方式。COM組件可簡單理解爲一個二進制可執行程序或DLL,內部包含一系列的接口和函數。Hook COM本質上也是進行函數地址切換,讓它跳到我們自定義的函數執行我們

原创 文件系統:FAT16

前文介紹了FAT12,本文則介紹FAT16。顧名思義,FAT表項佔用16bits即FAT16。其特點: 每個FAT表項佔用16bits 磁盤容量2.1MB到2048MB 簇數4085到65524 FAT16結構 每個扇區默認512

原创 Windows Hook經驗總結之一:API Hook方法彙總

HOOK的目的是用我們自己的代碼取代一些函數的代碼以改變程序的行爲。 靜態HOOK:在進程運行前掛鉤,採用用戶級進程即可完成。比如:有些程序會在啓動時需要原光盤,如果我們修改獲取驅動類型的函數則可以從硬盤啓動。 動態HOOK:掛鉤系統

原创 數據結構學習筆記(一):數組及查找算法

數據結構主要涉及查找、插入、刪除的時間複雜度(效率)和空間複雜度(內存開銷)。我擬寫一系列相關文檔,總結所學,做好mark,以備後查。也順便供大家學習、參考、交流。 參考編程語言的慣例,由簡至難,從數組開篇。畢竟,數組-大家耳熟能詳,使

原创 數據結構學習筆記(二):二叉查找樹

前一篇講了數組及查找算法,本文則闡述一種新的數據結構:二叉查找樹(Binary Search Tree,簡寫BST)。 其特點是: 1. 若左子樹非空,則左子樹上所有結點值均小於其根結點值; 2. 若右子樹非空,則右子樹上所有結