有沒有什麼辦法可以防止加載到內存中的純C#程序集可執行文件的轉儲,該內存最初受32位本地代碼包裝器的保護。防止Packed .Net可執行文件的內存轉儲?
回答
@Hasan說得沒有辦法阻止內存轉儲。不過,我認爲這裏有一個更深層次的問題。當你寫一個C#程序集「原本是受保護的由32 Bit Exe Native Code Wrapper」(強調我的)時,似乎你想阻止某人檢查C#程序集本身的內容。
只要有人親手參加那個集會,他們就可以打開它,並對它進行更多的瞭解,超出預期。例如,他們可以使用dotPeek或ILSpy將其反編譯爲C#源代碼。對於使用這些工具的人來說,你可以使用混淆器來讓你的生活變得更加困難,但即使是混淆現象也是如此。
底線是:一旦你把它提供給其他人,它已經失去了你的手。 預計其他人會反編譯你的代碼並在torrent站點上發佈副本(除非它是免費的)。 請勿將將您的超級密碼數據庫密碼放入您的代碼中,因爲有人可以反編譯代碼並以純文本形式讀取密碼。即使您在服務器上運行此代碼,也不要將密碼放在代碼中,原因是我在另一個SO回答here中描述的原因。
N.B.一旦開始分發軟件,也無法阻止某人將調試器附加到正在運行的可執行文件,因此,爲了檢查運行時信息,禁止檢查可執行文件本身的問題,某人甚至不需要內存轉儲。
有沒有防止內存轉儲的傻瓜證明方式。您可以將值設置爲secure strings。因此,如果有人需要內存轉儲,哪些是加密的;他們將無法從中理解。
編寫一個作爲受保護進程運行的Windows驅動程序。只有通過這個驅動程序啓動你的程序,並啓動它作爲一個受保護的過程。
如果你這樣做,即使反病毒程序也不能掃描你程序的內存。這就好像您嘗試調用受保護進程的openprocess或readprocessmemory一樣,您將收到拒絕訪問。
這裏的主要問題是驅動程序必須是一個Windows認證的驅動程序,這是耗時的實現。
此外,你將不得不實施一種方法來檢查程序已被保護的進程驅動程序調用,如果它不是無法打開程序。這種檢查可以很容易地刪除。
- 1. 反調試 - 防止內存轉儲
- 2. 防止內聯JS執行
- 3. 防止執行上傳的php文件?
- 4. 方法內可執行的配置文件存儲在C++
- 5. 捕獲內存轉儲 - .NET
- 6. 我可以防止無效的小型轉儲文件名
- 7. 防止在android的內部存儲器中存儲兩次視頻文件
- 8. MIPS內存執行預防
- 9. 防止執行
- 10. 防止執行PHPUnit引導文件
- 11. 執行文件存儲Laravel
- 12. 如何防止iostreams :: mapped_file_sink創建可執行文本文件
- 13. 防止損壞的可執行文件在OS X上啓動
- 14. 防止單個可執行文件的多個進程實例
- 15. 在Visual Studio可執行文件中執行SQL存儲過程
- 16. 如何防止在$ PATH上查找可執行文件?
- 17. 如何將信息存儲在我的可執行文件中.Net
- 18. 將Unix可執行文件轉換爲Windows可執行文件
- 19. 防止JavaScript執行
- 20. 防止從執行
- 21. 防止從執行
- 22. 如何防止$ .getScript執行document.ready內容?
- 23. 如何從內存執行可執行文件?
- 24. 防止同時執行兩次存儲過程
- 25. 防止調試時執行存儲過程
- 26. 在VB .NET存儲文件,然後distribut它執行
- 27. 防止多次執行可觀察
- 28. 防止XML文件緩存
- 29. 防止匿名訪問.Net Framework中的文件夾內容4.5
- 30. Git存儲:防止轉換行分隔符
我有同樣的問題,你有沒有找到解決辦法? – 2014-11-11 12:01:58