我想爲我的服務器提供某種保護,以防有人能夠訪問服務器並試圖竊取服務器可執行文件。因此,如果黑客無法找到真正的服務器可執行文件,他將轉儲服務器進程。
保護就像那個:
我將有一個服務器加載應用程序和服務器本身編譯成.NET程序集
Server機器幾乎從不會有這樣的組裝,我將其寫入CD-R,並且將其插入時裝載機應用程序啓動後,它從CD-R讀取程序集字節,然後從該程序集加載並創建所需的類,這將導致主服務器應用程序啓動。
然後我從驅動器中刪除CD-R。是否有可能從它的進程二進制轉儲中恢復可執行文件,它有多難?
byte[] raw_assembly = File.ReadAllBytes("E:\\server.dll");
Assembly ass = Assembly.Load(raw_assembly);
Type myclass = ass.GetType("Server.Form1");
object o = Activator.CreateInstance(myclass);
Application.Run((Form)o);
raw_assembly.Clear(); //pseudo Clear... no matter how, just delete from memory
服務器室門有一把鎖。也許用掃描儀,關鍵效果最好。你寫這樣的代碼,你永遠不會得到鑰匙。 –
一些被稱爲黑客的人不需要任何密鑰就可以訪問服務器機器:D – Kosmos