有關於hook及監控api的問題 |
尚未結案
|
birdychang
一般會員 發表:3 回覆:3 積分:1 註冊:2004-02-21 發送簡訊給我 |
小弟之前看了許多關於hook的資料
發現一個怪問題啊
幾乎所有介紹hook的文章
都說 若要使用global hook 就必須使用dll injection
但是之前使用網路上的範例
它使用WH_JOURNALRECORD的hook
不用dll 且又可以global hook 且又可以攔截很多種訊息
請問這種hook相較於其他種是有什麼缺點在
且又為什麼它不用注射dll到其他行程 卻又可以取得message
讓我百思不解 此外 我最近想研究一個監控registry改變的程式
網路上很多討論使用RegChangeNotifyKeyValue的win api
可是我覺得這個方法跟使用FindFirstChangeNotification
監控檔案目錄改變的方法一樣遜 因為不能得知改變的檔案路徑名
只能知道有發生改變 而且大多需要multi thread
我想一定有其他更好的方式 不知道是否有人可以分享一下
至於監控檔案目錄的改變
我以前有找到一個undocumented的函式SHCHANGENOTIFY之類的
還蠻好用的
如果有人有需要我再把它翻出來 發表人 - birdychang 於 2004/03/27 01:57:24 發表人 - birdychang 於 2004/03/27 02:24:25
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
birdychang
一般會員 發表:3 回覆:3 積分:1 註冊:2004-02-21 發送簡訊給我 |
雖然conundrum回的內容並沒有回答我的疑問
但還是多謝妳的回應 分數還是加給你吧
以下我把我找到的資料po一下
也許也有人跟我有一樣的問題 當hook的種類是WH_JOURNALRECORD時
雖然可以直接寫在同一個檔案中不用在寫個dll呼叫
就能達到全局勾子的效果
可是有時我們就是需要靠這個dll來達到某些目的
在陳寬達的"c builder深度歷險中"有提到
利用SetWindowsHookEx的函式設置全局hook時
若將hook procedure放在dll動態連結檔中
當有process發送message時系統就會先檢查包含
我們的hook procedure的dll在不在此process的記憶體中
若沒有就會自動load我們的dll
因此我們的dll就成為了此process的一部份
故利用SetWindowsHookEx函式其實達到另一個重要的目的
---就是把我們的dll注射到其他程序 抑或是全部的程序中 那要怎麼攔截windows的api呢??
我在網路上找到不少文章有討論 但我最後使用微軟開發的library
"Detours"
http://research.microsoft.com/sn/detours/
此工具可以幫你把指定的win api被呼叫時自動跳到妳定義的函式
如此就可以達到攔截api的效果
但若享用此方法攔截其他程序或程式的呼叫則會發生記憶體的存取錯誤
因為一個程序是不能隨意存取其他程序的空間滴
而windows提供的api放在系統的dll 如user32.dll中
當一個程式呼叫win api時會將此dll load到自己的記憶體再行呼叫
那麼我們是沒有權限去改別人記憶體中的函式讓它跳到我們定義的函式裡
那怎麼辦勒?? 沒錯 就是用SetWindowsHookEx把detours的
程式碼寫在包含hook procedure的dll裡
並再此dll被load時就更改load此dll的程序中
我們欲攔截的win api 使其跳到我們定義的函式
當然 我們定義的函式也是寫在這dll裡
如此就能達到攔截系統所有程序的api call了 以上是小弟所了解的 可能有些地方有誤
請多包含 並不吝指教 我成功利用上述的小技巧寫出一個監視registry的小程式
還頗有成就感說~~~~
新手真是容易滿足..........哈 發表人 - birdychang 於 2004/04/02 03:12:41
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
birdychang
一般會員 發表:3 回覆:3 積分:1 註冊:2004-02-21 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
birdychang 兄 你好
install shield
我說的是 自己類似install shield的功能
由於上述文章皆由KTOP網站轉PO
但我在KTOP上不常看到有關 API 監測REG的功能
又在此看到 所以狗膽 尋問一下 創作者是否 有分享意願 或要寫個 簡易 install shield 範例也是可以 此篇文章雖已有範例
【Delphi】【討論】KTOP資源整合 文章 列表 朝向 自製InstallShield軟體
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46809 21 有原始程式的install shield程式範例
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18603 這樣 自己打造的打包軟體 可以有很多變化 以可以讓新人或好手
自行研究 如何有效針對自己的軟體 封裝 美化 註冊 加密等機制 不知道 birdychang 兄是否知道
這一個軟體 RegSpy 1.7 你的程式與他的功能應該類同嗎? 當然 上述 原作者的精神是最重要的 發表人 - conundrum 於 2004/04/03 16:08:14
|
birdychang
一般會員 發表:3 回覆:3 積分:1 註冊:2004-02-21 發送簡訊給我 |
喔喔 inno setup我知道 以前有用過
還不錯用的一個免費軟體 不過小弟愚鈍壓 不知道大哥為啥說要用這類軟體
因為若需要原始碼 我上傳我的原始檔就好啦
呵 還是您還有其他的意思 regspy我沒用過 但應該都是一樣的
我第一次聽到這類軟體是這家公司做的
http://www.sysinternals.com/index.shtml
他們還蠻庫的 最有名的應該是他們regmon跟filemon
之前聽說他們本來有regmon跟filemon的原始碼
現在收起來了 可能不想分享最新技術吧
嘿嘿 可是我在大陸網站有抓到 等下上傳上來給需要的人
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47633
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47632
我覺得雖然做法都是攔截win32 api
但是detours還是比較好用 易懂
不過她的原始碼參考價值還是很高 我偷學了不少東西 真的覺得大陸人都蠻屌的 高手一堆 且他們也樂於分享經驗
我看到有delphi k top降的網站很高興
畢竟台灣很難找到降的一個地方唄
不過依我抓大陸人分享的檔案經驗
大多在裡面藏木馬..............
最近小地也在研究木馬的技術
雖然都不是什麼很新的技巧
但真的覺得要寫個木馬真的不難
不然現在也不會那麼氾濫
所以除了裝防毒軟體之餘
想多研究監控程式 一方面多了解windows的核心系統
一方面也可以讓自己對病毒木馬的防範更熟悉 發表人 - birdychang 於 2004/04/04 01:54:21
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |