2012年1月17日 星期二

Lower The Privilege of Executables


設想一種情況:
  1. 客戶給的執行檔要包在我們的安裝包裡並且在開機時自動執行
  2. 該執行檔在 build 時被設定為需要管理者權限來執行, 結果開機自動執行時都會跳出需要確認權限的對話框
  3. 但其實該執行檔做的事根本沒有必要用到這麼高的權限
  4. 然而我們又沒有 source code, 客戶又不重新 build
這時候, 我們可以將該執行檔的 manifest 匯出:
mt.exe -inputresource:XXX.exe;#1 -out:.\XXX.manifest
將匯出的 manifest 中的 "requireAdministrator" 改為 "asInvoker" 後存檔, 接著將之放回該執行檔:
mt.exe -manifest .\XXX.manifest -outputresource:XXX.exe;#1


更多資訊:
- How to: Embed a Manifest Inside a C/C++ Application
- Create and Embed an Application Manifest with Your Application

沒有留言:

張貼留言