2012-09-18 42 views
1

我需要做的首要的.exe unrunnable從它(當你嘗試直接啓動它,你會得到一個消息:不能直接啓動,如果從二級EXE運行(只它,必須有一個CRC校驗,我認爲),然後啓動。C#:做一個exe不運行直接

希望我說得夠清楚 首先.exe文件無法直接啓動 二.exe文件可以開始第一次EXE(只)

+1

你可以對它進行加密,只有讓second.exe有oey,但隨後還是很容易被黑客拆卸second.exe拿到鑰匙。 – Linuxios

回答

6

將無法​​直接啓動的EXE設置爲接受參數,例如應該啓動它的某個唯一數據的SHA-256散列。如果該參數不存在或不符合預期,則顯示錯誤並退出。

編輯:

static class Program 
{ 
    static void Main(params string[] args) //<- first needed change 
    { 
     if(args.Length == 0 || args[0] != "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") 
     { 
      Console.WriteLine("Cannot execute this program directly.") 
      return; 
     } 

     ... //rest of main function 
    } 
} 
+0

這是我需要的,但我該怎麼做?: - ?? –

+4

請記住,這只是非常安全。反編譯可執行文件並不難,或者找到密碼或刪除它的檢查。 – Servy

+0

我會製作自己的加密變種,並將Themida 2.x打包,這樣做可以嗎? –

2

我不是知道的進程名(Process.GetCurrentProcess().ProcessName)會給你的第一或第二EXE名稱,但可以使第一EXE的DLL和第二個爲EXE。

+0

可能有很多原因。記得GTA IV嗎?它有「GTAIV.exe」和「LaunchGTAIV.exe」,只有通過啓動器中的「GTAIV.exe」就可以執行... – Abbas

+0

我不能讓DLL,第一.EXE其遊戲本身,而第二發射 –

+0

如果進程名難道不工作將是第一EXE文件名重命名爲任何未知的結局,並從第二EXE運行時,你可以重新改變其結局EXE,然後啓動它,它不是很乾淨,但它的工作另一種方式。 – CloudyMarble

10

作出的第一個EXE一個DLL。然後第二個程序可以使用它,但用戶將無法直接運行它。

4

最簡單的方法是讓命令行參數或者仍然是,設置一個環境變量並運行它,這樣就很少有辦法跟蹤「我可以繞過你想要的事實使用你的應用程序來運行它「。但是,我會說一個DLL將是真正的途徑。

+0

我無法制作DLL –

+0

@CatalinMihai爲什麼? – Servy

+0

,因爲第一個.exe是我的遊戲,第二個exe是我的發射器,我需要兩個exe的 –