2012-04-29 78 views
0

我試着下載一個已簽名的可執行文件 (http://live.sysinternals.com/procexp.exe) 並對其進行修改。我認爲它不能完成,Windows會以某種方式阻止我運行它(或者至少警告我)。但是,當我更改單個字符(例如在DOS存根或任何其他文本數據中)時,它仍然可以運行。我可以更改已簽名的可執行文件

在修改之前,當我運行這個應用程序時,它會出現UAC警告,顯示它已簽名Microsoft並詢問是否要運行它。修改後,沒有這樣的事情。即使我恢復變化,它仍然不會顯示出來。我將修改和恢復的可執行文件與原始版本(總共命令)進行了比較,結果顯示沒有區別。但原來仍然飛濺UAC。

這是爲什麼?

我使用的是Windows 7和Firefox。

回答

1

我從來沒有試過這樣做。然而,當你編輯文件時,你使數字簽名無效,你應該在文件的屬性中看到它。

Windows通常不檢查數字簽名。數字簽名在文件被標記爲從互聯網下載時起作用(如果簽名有效,則Windows將在確認對話框中顯示其發佈者;否則,發佈者將是未知的),並且UAC(在這種情況下是數字簽名還確認該文件來自作爲數字簽名一部分存儲的發佈者)。

是否顯示或不顯示UAC確認不受數字簽名控制,它由應用程序清單控制。

所以在我的理解中,應顯示UAC對話框。但由於修改後的文件未通過數字簽名檢查,因此Windows可能會決定文件不安全以提升。您可以在Windows事件日誌中查找消息,可能會有事件解釋您看到的行爲。

+0

你是什麼意思的文件被標記爲從網上下載?我想這是事實。 我試過改變隨機值,保存文件並將其更改回原始。到目前爲止,我還沒有運行該程序。所有更改恢復後,我運行它,即使簽名有效,它也不顯示彈出窗口。 所以我想它以某種方式將文件的「下載」狀態更改爲「由用戶創建」或其他。這種信息存儲在哪裏?什麼是程序清單? 但是,無論如何感謝 – Samuel

+0

當你從互聯網下載文件時,一些瀏覽器(當然是第一個)在它上面存儲一個標誌。你可以在文件屬性對話框* General *標籤中看到它。*屬性*下會有* Security *行,其中聲明「此文件來自另一臺計算機,可能被阻止以幫助保護此計算機」。您還會在右側看到* Unblock *按鈕。搜索'應用程序清單',你就會知道它是什麼。您確定數字簽名在修改文件兩次後仍然有效嗎?我真的懷疑它。 –

+0

你說得對,它確實是解鎖按鈕。它在下載的文件上。複製此文件後,它仍保留在副本中。如果我更改文件,它會消失。如果我將其更改回正常狀態,則不會再顯示。我會搜索清單並讓你知道。 關於數字簽名 - 這是一個特定的散列。所以,如果你改變了一些東西然後恢復改變,它就和原來的哈希一樣(兩個文件都是一樣的:)),數字簽名將是有效的。其目的不是爲了防止變化。這是爲了找到差異。 – Samuel

0

我已將chrome.exe複製到其他目錄中,並開始在應用程序中寫入隨機字節。

我查了一下屬性,數字簽名就在那裏。我已經改變了應用程序。它無法執行(給一些國王的內部錯誤,而不是Windows錯誤),但仍然在屬性中顯示有效的證書。真奇怪。

我認爲windows只驗證應用程序的證書一次。

0

更改文件後,它仍然會顯示數字簽名,但如果您單擊該簽名的詳細信息按鈕,我認爲您會發現它說簽名無效。 當我將其更改回原來包含的內容時,它再次告訴我簽名是有效的。 (但是你必須使用一個編輯器來編輯字節,而不是一個可能會添加換行符或者無意的東西的編輯器。)

相關問題