2010-07-30 73 views
2

如果密碼被硬編碼到源代碼(如VB)中的變量中,有人可以通過查看已編譯的可執行代碼來提取此密碼嗎?從可執行代碼中提取的密碼?

如果是這樣,可以做些什麼來避免這種情況?

回答

9

是的,有人可以。

沒有辦法避免它。混淆會讓它變得更難。

在最糟糕的情況下,如果有人不理解您的混淆代碼,他們可以在調試器中運行您的可執行文件,並在使用之前從內存中讀取密碼。

解決方案當然不是將重要密碼硬編碼到二進制文件中。

+0

如果一個調試器可以查看任何變量,那麼如何保護用於訪問數據庫的密碼?當然,任何這樣的密碼在進入數據庫之前都會在內存中? – CJ7 2010-07-30 04:27:45

+0

@Craig:您可以讓軟件詢問密碼並將其存儲到某個地方。或者在典型的Web應用程序的情況下,安裝軟件時將密碼存儲到某個配置文件。關鍵是你不能通過獲取軟件來訪問數據庫,你也需要配置。 – 2010-07-30 04:35:00

+0

@Craig Johnston:對於高安全性應用程序,您需要一臺高安全性的計算機。如果計算機在物理上受到損害,則計算機有權訪問的任何憑據都會受到損害。也就是說,對於大多數具有僅由特定用戶可讀的配置文件並且在假定的用戶權限下運行該二進制文件的人來說被認爲是足夠的。 – Borealid 2010-07-30 04:37:55

1

是的。通過觀察程序在調試器中執行可以找到密碼。如果您什麼都不做,甚至可以通過在二進制文件中搜索文本來查找。

可以做些什麼?有一些反調試技術,如混淆或防篡改機制,這些機制會在調試時導致可執行文件崩潰。混淆可能很容易實現。防篡改將是困難的。

+1

防篡改也永遠不會100%有效。攻擊者可以開始在虛擬機中運行你的代碼,並且將密碼掛鉤到管理程序中;您的代碼將無法確定是否發生此類攻擊。 – Borealid 2010-07-30 04:40:52