看板 Programming 關於我們 聯絡資訊
purpose:plug-in 最常見就 dll 不是嗎 124.8.135.79 08/11 18:01
EdisonX:這方案最近面試的時候被打槍, Orz 180.177.76.161 08/11 18:12
purpose:那...如何打槍呢? 124.8.135.79 08/11 18:31
我補一下, 應該是可能我當下表達的不是很好, dll 可能真的是一個答案, 我的回答讓人覺得「太龐統」, 但再深入的講我又講不出所以然, 拿 excel 來講好了, 我拿來做的話會把 Create(Get)Sheet、CreateButton、CreateMenu、SetCell、GetCell、GenerateImage 放在 dll, 之後別人要開發 plug-in 時可重覆調用這幾個 api, 但整體的流程、架構我又 沒辦法給出較完整的雛形 (憑感覺蠻重的), 另粗略在想, IPC 是不是也是一種作法 ? 或是可搞得像 vs 外掛 VAX , 使用 xml format 維護? 最後也不確定 dll 是否為一普遍方向,( 就是不知道合不合出題者的胃口), 被打槍大概就這樣。 這問題 較偏向 open problem , 請版友詳答的話可能會浪費不少時間, 所以請教是否有些文章、網頁、書籍,或經驗可供分享,因這裡我沒實際開過後台。 謝謝 p 大的關注 :) ######################### 龐統 龐統*ㄆㄤˊ ㄊㄨㄥˇ***人名。(西元179~214)三國蜀襄陽人,字士元,德公之姪。 少時樸頓,未有識者,往見司馬徽,徽甚異之,稱為南州士之冠冕,由是漸顯。劉備召以 為治中從事,與諸葛亮並為軍師中郎將,佐劉備取蜀。後因圍雒縣,攻城時中流矢而卒, 時年三十六。 ######################### OllyDbg 的做法: 1. 主程式的執行檔 OllyDBG.EXE 本身也匯出內部函數,如: _Getbreakpointtype _Getbreakpointtypecount _Getcputhreadid 看名字就知道這些函數的功能 2. 主程式啟動時,自動掃瞄子資料夾 plugin,以一個 xxx.dll 為外掛單位。 再循序呼叫每個外掛都有的匯出函數,如: _ODBG_Plugininit _ODBG_Pluginmenu .... (外掛要匯出幾個函數是不一定的,有些軟體的外掛 DLL 是固定只有一個 _GetPluginObject 函數,從這函數來告知主程式該外掛執行動作的名稱,及位址。 3. 官方提供外掛開發 SDK 給有興趣的開發者,其中包含 plugin.h 用來提供如 _Getbreakpointtype() 函數的原型宣告。並提供 OllyDBG.EXE 的匯入用程式庫 檔案 OLLYDBG.LIB,以便外掛開發者可以透過 implicit link 調用主程式 提供的 API 函數。 http://www.ollydbg.de/pdk.htm Windows 檔案總管右鍵選單 (Shell Extension) 的做法: 1. 相當於 _Getbreakpointtype 地位的函數,全部使用 COM 架構,充斥在作業 系統內,比如某個系統 DLL 檔案內有提供某功能。 2. 每當使用者對檔案按下右鍵,電腦發現副檔名,比如 .txt, 在透過機碼查詢或 assoc .txt 指令查詢後可得知, 目前對應的檔案類型為:txtfile 又到機碼 HKEY_CLASSES_ROOT\txtfile\ShellEx\ContextMenuHandlers\OXOX 掃瞄得知,此檔案類型有個右鍵外掛名叫 OXOX,其身份識別碼 為 GUID: "{5E2121EE-0300-11D4-8D3B-444553540000}" 因此 Windows 會即時調用此 GUID 對應的外掛。 當然調用成功的前提是,外掛開發者遵從 COM 架構撰寫出 extOXOX.DLL 並將其 提前註冊告知 Windows 有此外掛的存在。 手動註冊:regsvr32.exe extOXOX.dll 移除:regsvr32.exe /u extOXOX.dll -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.135.79
purpose:移動個游標一直 lag 網路好爛,媽的 124.8.135.79 08/11 20:55
yauhh:好明白 118.167.54.220 08/11 21:12
EdisonX:謝謝 p 大回答 , 我再依此篇查看其他資料. 180.177.76.161 08/11 21:20
EdisonX:非常感謝 :) 180.177.76.161 08/11 21:20
MOONRAKER:贊。 118.165.217.26 08/12 02:31