2013-03-21 88 views
7

我需要加密Microsoft Visual C++編譯器爲我製作的exe文件嗎?我有一個遊戲由幾個圖書館組成,我擁有所有的資源加密,但是我擔心人們會闖入exe並更改代碼,這有可能嗎?C++ Exe加密?

+16

歡迎來到DRM的世界......這是一場戰鬥......那......你......會......不會......贏...... – Mysticial 2013-03-21 06:34:05

+1

對於初學者來說,你需要對exe進行decrpyt然後運行它(它必須放在磁盤上,否則你將不得不做一些非常瘋狂的記憶狗屎,使它從內存中運行):爲什麼要做所有這些工作呢?只要加密數據本身,如果它是如此重要,而不是.exe。 – 2013-03-21 06:36:30

+1

對於一款遊戲,我認爲這完全沒有意義。對於具有價格標籤的程序來證明它的價值,一些基於加密狗的方案提供至少一些安全性,但是它們的價格意味着它們通常只用於相對昂貴的軟件(數千美元)。 – 2013-03-21 06:39:57

回答

4

沒有辦法制作不可破解的軟件。如果它在用戶機器上,則用戶理論上可以完全控制它。

你可以嘗試做的是讓人們更難以破解。 你在找什麼叫做"Executable compression"。犰狳做這樣的事情,UPX也是如此。

PE格式包裝器的完整列表可以找到here

要加密壓縮資源,您可以使用支持加密的存檔格式的LZMA SDK。請注意,儘管您嘗試隱藏該加密密鑰。正如他們所說,「你可以跑,但你不能隱藏」:)

歡迎來到醜陋的DRM世界。

+0

使用C++的專業遊戲如何讓一般玩家無法使用資源和exe啓動器打開其重命名的zip文件? – user2184442 2013-03-21 06:40:44

+4

@ user2184442他們沒有。這就是爲什麼普通玩家只需下載一個破解文件並在沒有CD的情況下運行遊戲即可...... – Mysticial 2013-03-21 06:41:36

+3

它對它們進行了加密,但是爲了讓遊戲使用這些資源,它必須對它們進行解密。爲此,執行解密的算法也必須位於用戶的機器上,所以用戶最終得到了加密的zip和解密的手段。從那裏,你知道後面。 – 2013-03-21 06:42:16

0

它沒有多大意義。爲了執行該程序,它必須在內存中解密,所以解密後的代碼將存儲在內存中,以便將其轉儲。

但是,您可以簽署您的可執行文件(有關詳細信息,請參閱this article)。當可執行文件被簽名時,它受到完整性保護,最好的部分是大多數操作系統都支持這一功能,包括Windows。如果可執行文件被修改,操作系統可以檢測到篡改並且不會啓動它(或至少警告用戶)。

+1

您是否試過傾銷包裝的EXE?它不是那麼容易。打包程序還會插入代碼,這些代碼可能會在您使用調試程序附加代碼時偶然觸發,並逐步執行代碼以達到可以轉儲映像的狀態。這不是不可能的,但它被誘殺。不平凡。 – 2013-03-21 06:44:55

3

無論您使用哪種技術,如果您將可執行文件和資源都發送給最終用戶,並且如果它值得,它們最終會被破解,並且您無法對其執行任何操作。您只能使解密過程更加艱難,但增加安全性只會影響合法用戶,並且您會浪費時間,從而花費在改進軟件上。

蘋果程序員肯定比你和我都好,但他們所有的iPhone最終都被越獄了。