大大好,
我們公司有一支監控程式,
每天零時會產生一個監控的txt檔在指定目錄,
一天一個,然後當天不定時將監控的資訊更新到那個檔案,
所以檔案會越來越大,
現在老闆希望說,
能夠在程式產生了記錄文字後,要更新至txt檔之前,
先攔截文字,修改一些地方,再寫入txt檔,
因為該監控程式不是我們家做的,無法直接更改程式碼,
印象中用Hook似乎可以做到這樣的功能,
小弟上網查到了一堆Hook攔截滑鼠、鍵盤....等等的方式,
但是找不到Hook攔截程式IO磁碟的方式,
能否請大大給點提示呢?
或是可以買哪本相關書籍? 台灣好少Win API的書,都找不到。
如果那個檔案只有公司內使用, 可以在存檔後, 要另外使用(例如: 分析)前改掉就好.
如果那個檔案是外部稽核檔, 建議您換工作.
感謝大大的回答,
檔案是公司內部監控儀器使用的,所以應該不用換工作
問題在於實際上的限制,必須要將另一台儀器產生的資訊同步寫入txt檔,
可以說是差了一秒都不行,
原本這樣的需求必須改監控程式讓它同時監控兩個儀器才對,
問題除了卡在錢,也卡在時間,所以直接放棄改原本程式的想法了。
還是很感謝大大回答,小弟在老闆放棄之前只能先找找看有沒有方法做到。
印象中 .txt 檔並不會有被鎖定的問題,
所以就算兩支不同程式, 可以用"累加(append)"於檔案最後, 而不影響.
所以可能要麻煩再說明一下:"將另一台儀器產生的資訊同步寫入txt檔"的流程?
比如: A 機器寫入 -> 需要同時記錄環境需要 -> 呼叫 B 機器 -> 記錄 B 機器的記錄.
那我會考慮: 不管幾時, 讓 B 機器一直寫入, 而當 A 機器寫入後, 再去比對 A 機器寫入的前一筆及後一筆資料.
(因為原本的描述, 讓我以為是要"篡改"記錄.... XD )
比如:
(個人推測您老闆的期望)
A: 10:30 監控器看見美女
B: 10:30 當時室溫 33 度, 老闆體溫 38 度.
(個人會想)
B: 10:25 當時室溫 25 度, 老闆體溫 20 度. (冷血動物...)
B: 10:26 當時室溫 26 度, 老闆體溫 20 度.
B: 10:27 當時室溫 27 度, 老闆體溫 20 度.
B: 10:28 當時室溫 28 度, 老闆體溫 20 度.
B: 10:29 當時室溫 29 度, 老闆體溫 20 度.
A: 10:30 監控器看見美女
B: 10:30 當時室溫 30 度, 老闆體溫 38 度.
B: 10:31 當時室溫 31 度, 老闆體溫 38 度.
之後再用程式去撈取 A 記錄與 B 的 10:29~10:30 的記錄.
1.你要先分析出那隻應用程式是用那些API做檔案寫入功能的
2.去找Hook API的Code來改寫出你要的功能 (Hook API的運作原理有好幾種)
基本上有些難度, 除非你有用過Hook API寫過遊戲外掛的經驗
不然建議別這麼做
嗯, 給您另一個思考方向...
建立一個背景程式, 隨時隨地監視該檔案的狀況,
正所謂山不轉路轉, 這個方式比較沒什麼技術,
要想學技術, 可以去了解一下 "SERVICE DESCRIPTOR TABLE" "ssdt"
很底層喲!! ^O^
我的建議如下,算是三十六計之偷天換日:
Step 1: 監控程式產生一個監控的txt檔在指定目錄 <-- 將目錄改到 \temp 去
Step 2: 客制新程式去定期讀取 \temp\監控的txt檔
Step 3: 加上要的資料後,更新到指定目錄.
Step 4: 收工