2011-03-04 59 views
0

我有一個Delphi應用程序,其中包含一個對外部程序集有一些依賴關係的清單文件。是否有阻止某人更新/更改該清單以指向不同的程序集,從而可能改變我的應用程序的工作方式?使用MT.exe更新嵌入式清單非常簡單。防止外部編輯應用程序清單?

+1

我不認爲你應該擔心有人用資源編輯器改變你的嵌入式清單。如果你擔心你應該開始擔心你正在導入的每種方法(因爲有人可能會編輯你的exe的導入表),更別說擔心有人編輯你的嵌入式DFM文件(那些改變應用程序外觀或功能的文件) – 2011-03-04 19:30:04

+0

I認爲這打破了艙單的目標之一。清單表明您在編寫應用程序時已知的兼容依賴項。如果在稍後階段找到新的兼容依賴關係,您(或其他人)只需要更改清單 - 不重建應用程序。基本上,你會阻止這個選項。 – 2011-06-13 08:25:30

回答

4

嗯,我想你可以在啓動時閱讀清單資源,然後終止進程,如果它不符合你期望的。你可以檢查一個哈希版本,以便讓某個人更難以擊敗測試。

但是,如果有人真的想打敗這種測試,那麼他們會找到一種方法。

+1

編輯清單(或資源)非常簡單。擊敗正在檢查校驗和清單並阻止應用程序執行的代碼(如果檢測到篡改)當然不是不可能的,但它的難度不是數量級的。這就是爲什麼銀行不把所有的錢都放在樹枝中間......當然,如果有人有足夠的決心,他們可以從金庫中偷走它,但是保護你的東西仍然是有道理的,如果它適合您的需要這樣做。 – Deltics 2011-03-05 22:39:25

3

我相信,如果您使用證書對您的EXE(EXE包含嵌入式清單)進行簽名,那麼應該可以停止對清單的外部編輯。當然,獲得證書不是最簡單或最便宜的過程。

+1

不能將exe無符號? – 2011-03-04 18:02:08

+0

簽名可能被剝離,但您可以將代碼添加到檢查簽名的exe文件中。然後有人可以調整你的二進制文件來跳過檢查代碼,所以你添加了更多的代碼來防止這種情況發生,並且......你明白了。 :) – 2011-03-05 15:54:58

1

您可以將清單存儲爲編譯到應用程序中的資源,並將其作爲啓動過程的一部分寫入您的目錄。這將覆蓋任何人可能做出的任何更改並讓您控制。

+1

不能編輯資源嗎?啓動期間 – 2011-03-04 17:55:28

+0

太晚,資源可編輯,這是問題的要點 – 2011-03-04 18:03:55