mono軟體加密
❶ 如何防止U3D游戲引擎代碼被反編譯
經過查看不少的資料,發現目前針對的U3D游戲引擎代碼防反編譯,主要是通過DLL文件進行混淆,而支持的DLL混淆的服務商有愛加密等等,通過DLL文件本身進行加密,防止DLL被反編譯,並且對加密演算法和密鑰進行加密,對加密過程也進行了加密。
❷ Unity3D代碼加密如何做到防止反編譯
Unity3D主要使用C#語法和開源mono運行開發商的代碼邏輯,所有代碼都不是編譯到EXE,而是位於{APP}\build\game_Data\Managed\Assembly-CSharp.dll。而且mono執行原理跟微軟.NET Framework兼容但是執行原理完全不一樣。傳統的.NET Framework加殼全部失效,因為Assembly-CSharp.dll不是PE格式的動態庫也不是.NET的動態庫,無法從 .NET Framework 載入,而是由mono.dll讀取 Assembly-CSharp.dll的裡面C#腳本解釋執行。
Virbox Protector 對 Assembly-CSharp.dll 做加密,無需手動加密 Assembly-CSharp.dll 代碼,自動編譯 mono, Assembly-CSharp.dll 代碼按需解密,只有調用到才會在內存解密,不調用不解密,黑客無法一次解出所有的代碼。一鍵加密代碼邏輯,無法反編譯,無法mp內存。不降低游戲幀數,自帶反黑引擎,驅動級別反調試,秒殺市面的所有調試器。
Uinty3D 主要的游戲資源都在 resources.assets ,游戲裡面所有放在 resources 文件夾下的東西都會放在這里,DSProtector工具可以對Unity軟體中的 .resS和resources等資源文件進行加密防止軟體或游戲中的資源被非法提取。
❸ 如何防止Unity3D代碼被反編譯
加密原理(無需Unity源碼):
1. IDA Pro打開libmono.so, 修改mono_image_open_from_data_with_name為
mono_image_open_from_data_with_name_0,
2. 替換實現mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...);
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...);
//發現數據文件頭不是DLL前綴則解密 img->raw_data, 相應修改img->raw_data_len
return img;
}
3. 重新打包libmono.so; 替換Unity3D中的android下的版本.
4. 另外寫個加密的工具,植入構建環境(MonoDeveloper或VS,添加一個打包後Build Phase來加密DLL); (IOS下禁用JIT固採用AOT編譯,DLL中沒有邏輯代碼,所以無需操心);