导航:首页 > 源码编译 > 反编译unity脚本

反编译unity脚本

发布时间:2022-07-14 00:04:40

‘壹’ unity3d 反编译后怎么用

在Unity3D中,代码会编译到Assembly-CSharp.dll。基于以上两点,代码的保护有以下两种:
第一种是对代码进行混淆,诸如混淆软件CodeGuard、CryptoObfuscator、de4dot
第二种是对Assembly-CSharp.dll进行加密后,重新对mono进行编译。。
Virbox Protector可对Assembly-CSharp.dll直接进行加壳后,无需手动编译mono,能防止反编译

‘贰’ 如何将已经打包好的unity游戏反编译为工程文件夹(不是提取资源,是直接反编译成能用的工程文件夹)

首先想通过此方法完全复刻一个游戏工程,这是不可能的 不要想了

对于反编译脚本的话
1、基于il2cpp编译的 目前来说虽然可以 但是对于新手还是有点困难的
2、基于mono编译的 可以把dll文件推到反编译软件比如ilspy即可

‘叁’ 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代码被反编译

根本的解决办法是:先对DLL加密,然后在Unity的源码中加载程序DLL之前进行解密。

这就需要通过逆向工程获得相应的Unity源码或者是直接向Unity购买Source Code License。

‘伍’ 如何防止Unity3D代码被反编译

如果你没有Unity的Source License,这个问题我觉得基本是无解的。
对于iOS平台AOT后Strip掉IL可能有用,但其他平台基本没什么办法。还有一个思路是加壳,但这个至少在移动端上我没试验过,而且基本上也是道高一尺魔高一丈的事情。
还有一个是把一些关键代码写成Native插件,但这样做我觉得完全就没有使用Unity的优势了,所以也不是很推荐。

如果是涉及网络的游戏,另一个相对有效的解决方案是把逻辑放在服务端,基本上不给客户端Gameplay逻辑层的信任,客户端只负责只发送具体操作。对于非在线游戏我确实没看到什么有效的解法。

个人觉得么,也不要太费劲折腾了,人家要搞你总是有办法的。就算你不用Unity,真的高手是Native Binary一样破给你看的。

‘陆’ 如何防止Unity3D代码被反编译

如果你没有统一的源代码,我认为这个问题基本上没有解决。它可能会下降,而IL iOS平台是有用的在AOT,但基本上没有其他平台。


另一个想法是包装,但至少我没有在移动终端上测试过,但基本上是迈出了一步。另一种方法是在本地插件中编写一些关键代码,但我不认为这是使用Unity的优点所以我并没有真正推荐它。

直接使用GDB转储内存运行android,不管你在内存末端加密的布局是相同的,但都是软的。因此,这是一个本机插件(麻烦),或者简单地加密和过滤80%个新的解决方案。

‘柒’ unity webgl能反编译吗

可以的
加密原理(无需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中没有逻辑代码,所以无需操心);

‘捌’ 如何防止Unity3D代码被反编译

控制角色移动播放动作或者其他逻辑则需要给这个橘色节点绑定逻辑脚本,UNity支持多种脚本语言,在此是用JAVA脚本.
创建 脚本Assets --> Create ----> JavaScript 创建一个空的逻辑脚本,并将这个脚本绑定在主角对象身上,绑定方式是直接拖拽到主角节点即可。
对脚本的编写:
类及接口主要参照帮助文档,这里只介绍脚本基本结构和简单示例:
每个脚本至少都有两个函数: function Start() 可以认为是初始化 function Updata()则是每帧更新函数。
要实现对角色位置的控制移动首先要定义该角色,
首先 定义GameObject对象也就是要控制的目标: private var _MainRole:GameObject;;
在function Start() 函数中初始化该对象: inRole = GameObject.Find("MainRole"); // 从场景中查找到名叫"MainRole"的对象也就是主角。
在每帧更新时侦听键盘事件,如果按键按下W则空对象向前移动
if(Input.GetKey(KeyCode.W))
{
_MainRole.transform.Translate( Vector3.forward * 0.05 );
}

至此,就已经完成按键控制角色移动的全部过程,运行游戏就可以用按键控制角色移动。

阅读全文

与反编译unity脚本相关的资料

热点内容
努比亚Z5无命令 浏览:640
展示网站云服务器 浏览:870
代码混淆器php 浏览:365
贝恩pdf 浏览:207
丙烯pdf 浏览:366
云服务器华硕 浏览:711
sublime3运行python 浏览:188
怎么把安卓视频传到苹果上面 浏览:81
手机拍鬼片用什么app 浏览:640
爬山虎app是干什么用的 浏览:505
有哪些写给程序员的歌 浏览:49
成都市命令 浏览:993
建立系列文件夹 浏览:983
苹果开机白屏带文件夹问号 浏览:733
体验服为什么服务器会关闭 浏览:41
酒店命令 浏览:750
中走丝线切割编程视频 浏览:80
衣服压缩袋手泵原理 浏览:714
通达信编程书籍 浏览:981
车用压缩天然气瓶阀 浏览:971