2012-08-13 75 views

回答

4

安全地做到這一點基本上是不可能的。任何發射器都可以做的事情,用戶也可以做。

通過讓啓動器將加密簽名的時間戳傳遞給單獨的程序,可以讓用戶更難。但是,用戶可以從啓動器中提取私鑰並手動簽署時間戳。

你可以使程序檢查其父PID,確保發射EXE是用自己的私鑰簽名,但用戶可以修改程序來刪除該檢查。

你也可以把EXE到DLL,具有通過發射調用的方法,但是用戶可以編寫自己的EXE也調用這個方法。

1

一個選項是在運行第二個程序時需要參數,儘管這很容易被利用。你並不真正說這是爲了什麼,所以它可能夠好。

根據你的啓動程序做了什麼,你也許能夠檢查是否這些操作已經完成,如果沒有,退出程序。

如果您需要這是特別安全的,你也許可以建立一些公私密鑰系統,加密和動態一塊信息(如時間戳)。老實說,我認爲這會比它的價值更多的工作,如果其中任何一個反彙編程序仍然可以被利用。

0

您可能要實現的主要功能作爲一個單獨的DLL文件並從啓動應用程序調用它。 這是主要功能不完全是一個單獨的應用程序的方式,所以它可能不完全是你想要的,但它是分開的,需要運行另一個應用程序(啓動器)。

0

一個合適的解決方案取決於你正在試圖阻止什麼。

如果你的目標是,「在任何情況下,一個熟練的黑客不斷推出B.EXE除了通過A.exe時」,這是很難實現的。

如果你的目標是:「我不希望用戶不小心啓動B.EXE因爲A.exe時是他們應該使用什麼」,有選擇。例如,從A.exe時傳遞一個命令行參數B.EXE,一個普通的用戶將不知道通過。

-1

我有兩個建議,以達到你想要的東西。

  1. 第二個exe是否需要實際上是一個exe文件?你可以把它變成圖書館電話嗎?將功能調用爲在啓動器進程下運行的線程。

  2. 使用未發佈的命令行參數。如果他們沒有提供第二個EXE終止。這並不完全安全,但我相信這是現代遊戲發射器的工作原理。

最終,我不認爲有一種方法「通過隱藏的安全」

+0

我可以得到降價的原因嗎? – 2012-08-17 12:55:51

0

這樣做沒有您可以創建使用GUID一個互斥體在發射名字。然後檢查程序中的互斥鎖。像其他人所說,這不是很安全,但會阻止大多數人直接啓動程序。