2012-11-26 112 views
1

考慮一個提供接受密碼或許可證密鑰或敏感數據的函數的庫,共享庫和靜態庫之間的安全性有任何區別嗎?靜態vs共享庫安全

是否有可能「嗅探」在共享庫上執行的調用?或用假共享庫替換原始共享庫,並將傳遞給函數調用的所有參數「打印」到該庫?

+0

這是可能的嗅探它,但爲什麼有人想要嗅探自己的密碼,密鑰或數據?如果您問是否可以在機器上處理數據,並確保其不受該機器的操作員/所有者(典型操作系統上的典型硬件)的影響,則答案爲否。 –

+0

我正在考慮基於需要許可證密鑰的庫發佈軟件。通過重新分發此軟件,我的許可證密鑰可以使用。 – Sdra

+0

請遵守圖書館許可。如果它要求你保持關鍵的祕密,但也分發它,它是要求你做不可能的事情。通常這樣的密鑰並不是要保密的。如果用戶偷了鑰匙,並在另一個程序中使用它,關鍵將成爲很容易使圖書館筆者證明小偷沒有購買的關鍵(因爲你做了它的預期目的,而賊是不是你)。 –

回答

1

事實上,替換共享庫是捕獲密鑰的簡單方法。但是,當您靜態鏈接庫時,在正在運行的應用程序中放置斷點並捕獲密鑰也不難。所以作爲一名圖書館開發人員,你需要忍受它 - 對於這個問題沒有好的解決方案。方法以抵消偷鑰匙和使用圖書館的「盜版」的版本主要有非技術 - 跟蹤用戶,並拒絕支持那些誰沒有登記,提供通過禁區更新您的網站等

+0

如果庫是靜態的幷包含在最終的二進制文件中,那麼可以去掉所有的符號......在這種情況下,你還可以設置斷點嗎?調試器如何知道函數名稱在剝離的二進制文件中? – Sdra

+0

@Sdra黑客在做這項工作時不依賴於符號。這可能很容易把你單獨庫(不鏈接到產品),看看有什麼功能去的地方。由於具有與代碼分析,我可以說,這是不難做到的一些經驗的人。 –

1

一般來說,可以使用提供相同接口的自己的版本來替換共享庫,例如在Linux中可以設置LD_LIBRARY_PATH來告訴它在哪裏查找庫,在Windows中可以將DLL放入搜索路徑。

但是,如果你可以這樣做,你可以用原始版本的替換來替換主程序,所以除了攔截數據的難度之外,沒有太多的安全差異。