2009-10-20 70 views
1

我想要反向工程程序,做一些基本的解析:文本輸入,文本輸出。我有一個可執行的「參考實現」和源代碼,必須是不同的版本,因爲編譯後的源輸出!=可執行輸出。看看一個進程創建的臨時文件

該進程在多步驟分析過程中非常快速地創建和刪除臨時文件。如果我可以看看各個臨時文件,我可以得到一些很好的診斷數據來縮小我的來源與二進制文件不同的地方。

有什麼辦法可以做到以下任何一種?

  • 凍結一個目錄,以便文件創建將工作,但文件刪除將失敗默默?
  • 以「慢動作」運行程序,以便我可以查看它創建的文件?
  • 記錄程序所做的一切,包括寫入文件的任何數據?
+0

它們在離開之前創建它們的速度有多快?他們是二進制還是文本?任何想法,如果他們每次都有相同的名字? – 2009-10-20 16:11:06

回答

2

運行一個像NTFS Undelete這樣的工具應該給你機會恢復它創建和刪除的臨時文件。將它與Sysinternals的ProcMon組合起來,以獲得正確的文件名。

+0

好主意,但這個幫了我最多。謝謝 – Ryan 2009-10-29 17:50:05

1

你沒有提到你在做什麼OS這一點,但假設你使用的是Windows ...

您可能能夠利用的Sysinternals工具,如Process ExplorerProcess Monitor得到對訪問的文件有更好的理解。據我所知,文件夾上沒有「只寫」選項。爲了「放慢」文件,你只需要使用一臺速度較慢的電腦。對於日誌記錄來說,SysInternals工具將會有所幫助。一旦您創建了正在創建的文件名,您可以嘗試通過打開來自另一個進程的流中的文件來阻止其刪除。這將阻止系統刪除它們。

1

有兩種方法來攻擊這一點:通過兩個系統

  1. 運行各種小測試案例,並注意區別。由於測試用例很小,因此您應該能夠找出代碼與可執行文件不同的原因。

  2. 反彙編可執行文件並刪除所有「刪除臨時文件」指令。根據工作方式的不同,這可能是一項非常複雜的任務(比如說,當沒有中心的地方時)。