讓 Win32 應用程式進入 Ring 0:繞過保護模式的技術原理與實現
背景 Windows 9x 使用 x86 三環保護:Ring 0 (核心/VxD)、Ring 3 (應用程式)。應用程式嘗試執行特權指令 (`MOV EAX,
跨進程讀取 ListView 內容:VirtualAllocEx + WriteProcessMemory + LVM_GETITEMTEXT 實戰
核心挑戰 目標進程的 `ListView` 記憶體空間不在當前進程,需跨進程配置緩衝區、寫入 `LVITEM` 結構、發送訊息、讀回文字。 關鍵步驟 `Ge
快速自動生成並客製化報表:TDBGrid 到 TQuickRep 動態建構技術
痛點 手工設計報表耗時;使用者想把 `TDBGrid` 查詢結果直接列印,且能微調版面。 動態生成架構 讀取 `TDBGrid` 顯示資訊:欄位標題、寬度、
Windows Socket API 實戰經驗總結:WSAStartup、socket、連線與資料收發關鍵點
1. WSAStartup:版本協商與載入 WORD wVersionRequested = MAKEWORD(2, 1); // 請求 2.1 版 WSAD
Winsock API 函數大全 (WinSock 1.1):BSD 標準與 Windows 擴展函數完整列表
標準 BSD 函式 (30個) accept() bind() closesocket() connect() getpeername(
C++Builder 呼叫 MATLAB:DLL 混合程式設計實現數值計算與繪圖優勢互補
為何結合? C++Builder:介面、資料採集、通訊埠控制強,但數值分析、繪圖弱。 MATLAB:矩陣運算、工具箱、繪圖極強,但無即時控制、埠操作能力。
Windows 檔案保護 (WFP) 應用:列舉受保護檔案與檢測單一檔案
背景 Windows File Protection (SFC) 防止關鍵系統檔案被覆寫。開發安裝程式、修復工具時常需查詢某檔案是否受保護、或列舉所有受保護檔案
極速取得目錄大小:Scripting.FileSystemObject 一行搞定
原理 利用 Windows Scripting Runtime 的 Scripting.FileSystemObject,透過 COM 自動化直接取得資料夾 S
取得 Windows 特殊資料夾路徑:SHGetSpecialFolderLocation 完整指南
API 簡介 SHGetSpecialFolderLocation(需 ``)可取得桌面、我的文件、啟動目錄等系統特殊資料夾的 PIDL(項目 ID 清單),再
NTFS 替代資料流(ADS)深度解析:隱藏資料、查詢 API 與工具
什麼是 NTFS 流? 每個檔案可掛載多個「流」,流名以冒號分隔:`檔案名:流名`。流可儲存二進位、文字等任意資料,獨立於主資料流(`:$DATA`)。 命令
C++Builder 使用 WIN.INI 讀寫設定:WriteProfileString / GetProfileInt 實戰
為何用 WIN.INI? 註冊表過大易導致系統錯誤,少量資料用 INI 檔更輕量、易維護、可手動編輯。 核心 API BOOL WriteProfileStr
C++Builder 取得應用程式圖示:ExtractIcon 與 SHGetFileInfo 兩法
基本需求 從可執行檔(.exe/.dll)提取第一個圖示並顯示於 TImage。 方法一:ExtractIcon(僅限可執行檔) LoadFromFile(T
Windows 無標題列視窗客戶區拖曳技術完整實作指南
應用場景 IME 輸入法、浮動工具箱、Office 桌面工具列等「無標題列、常駐頂層」高級視窗,必須自行實作客戶區拖曳移動。 系統預設 vs 自行實作 普通
資訊加密流程圖模擬:MD5、DES、RSA 組合加解密實作解析
專案簡介 Encryption_Demo 僅模擬「安全認證加密/解密流程圖」的邏輯流向,不涉及實際網路傳輸,適合理解混合加密流程與位元組偏移計算。 流程圖說明
C++ 多國語言支援實戰:以 eMule 為例的資源 DLL 動態切換架構
為何選 eMule 做範例? 開源、支援動態切換語言無需重啟、實作完善,極適合研究多語言架構。 核心架構:主程式 + 語言資源 DLL 每種語言一個獨立 D
打造磁性吸附視窗:WinAmp 風格界面實現全解析
什麼是磁性視窗? 多個視窗靠近至一定距離時自動吸附合併,拖動其中一個視窗,其他吸附視窗同步移動,彷彿合為一體。WinAmp、CDOK 等經典播放器皆採用此技術提
DBGrid 實現行選中與編輯狀態共存的技巧
問題背景 在使用 DBGrid 顯示大量欄位時,開發者常面臨兩難:若不啟用 dgRowSelect,水平滾動到右側時容易看錯行;若啟用 dgRowSelect,