【转】UNITY之LUA加密】的更多相关文章

来自:Lua加密 两种方式:一种用luac,一种用luajit luac加密: 1.lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,去官网下载Lua源代码包(http://www.lua.org/ftp/),下好解压,目录如下 2.启动一个Visual Studio 命令行工具,用32位命令行会生成32位版本,用64位则生成64位版本 3.在命令行中使用cd 进入lua目录(刚才解压后的目录),然后输入 "etc\luavs.bat" 回车 4.如果没有问…
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源代码(dll文件) 解密方法:libmono.so (重点:加入解密算法并重编译此文件) 加密的目地 .NET Reflector等反编译工具 无法通过对dll反编译得到源码 注意事项 dll的加密算法和libmono.so解密算法一致 思路分析 重点:我们需要对libmono.so重编译,加入我们…
    首先要说.近期真的是太忙了.好久没写博客了,今天正好有空,就写一下近期在写游戏中的一些发现:     话说,基于Cocos2dx 引擎 + 脚本写游戏,至今的感触就是能够进行增量更新和即时编译等,节省了非常多时间:好了废话不多说了,进入正题: 这里我是以Cocos2d-x-2.2.2 为例<事实上,写着文章时候Cocos2d-x-3.2 都封版了>.    今天我就说一下怎么用Cocos2d-x3.2中的cocos-console 去 批量 加密lua脚本-变成luac文件 ,js文…
tolua#代码简要分析 2017-04-16 23:02 by 风恋残雪, 98 阅读, 1 评论, 收藏, 编辑 简介 tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类.它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问Unity的绑定代码,并把C#中的常量.变量.函数.属性.类以及枚举暴露给lua.它是从cstolua衍变而来.从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c…
两种方式:一种用luac,一种用luajit luac加密: 1.lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,去官网下载Lua源代码包(http://www.lua.org/ftp/),下好解压,目录如下 2.启动一个Visual Studio 命令行工具,用32位命令行会生成32位版本,用64位则生成64位版本 3.在命令行中使用cd 进入lua目录(刚才解压后的目录),然后输入 "etc\luavs.bat" 回车 4.如果没有问题的话,会显示生成…
cocos2d使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用. 目前所指的解决方案有2个: A.luajit加密: 1.官网下载luajit(http://luajit.org/luajit.html),解压,目录如下 2.在命令行中使用cd 进入luajit下src的目录,然后执行输入msvcbuild.bat,执行此批处理文件,编译出luajit.exe 3.接下来就可以使用lu…
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行.下面是使用原生的lua解释器编译字节码:1.新建一个名为1.lua的文件,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件2.开始--运行--cmd3.luac -o out.lua 1.lua注: luac -o [编译后脚本名] [脚本名],必要时带上脚本路径,如: 回车之后,再打开out.l…
cocos2dx-lua项目发布时,为了保护lua源码,需要对lua进行加密.通常分为两种方式:加密文件和编译为字节码. 1.加密文件 前提是你不用luajit,而使用lua.这样这种方法是真正加密,原理是我们自己替换掉lua的的loader函数.通常需要以下几个步骤: (1)确立加密算法,并实现批量加密的工具. (2)实现文件读取时解密,并调用lua解释器加载解密后模块. 2.编译成字节码. 这种其实并不是真正意义上的加密,而是用luajit把lua脚本编译成字节码.反编译?! 因为目前项目的…
国内开发: 敏捷开发: 集中精力加班堆出来第一个版本 基本没啥大的bug 国外开发: 1).需求分析: 2).讨论 3).分模块 4).框架 5).画UML图(类图class function)(e-r图 数据库) 6). 编码 7).单元测试 程序猿 测试组: 集成测试(自动化测试工具),有黑盒和白盒,白盒知道其原理对症下药 lua是一种脚本语言, 轻量级. lua的用途: 1).cocos-2dx 2).lua作为后端 纯粹的lua语言 3).lua 用于热更新(unity里面直接做) 修改…
项目中引用了XLua,而Lua文件又是以txt文件结尾的,当修改系统的扩展脚本编辑器为vs后双击lua文件(xx.txt)默认也使用vs打开了,无提示的黑白文本编辑 昨办? -. 后来看到网上有写Unity的插件,想着应该也能判断后缀名然后调用指定的编辑器,果然可以.直接贴代码了(C#文件,只要建一个名为Editor的目录 -- 与路径无关,扔进去就行,Unity会自动编译的) using UnityEngine; using UnityEditor; using System; public…
BehaviorDesigner是Unity上的一款行为树插件,不过这个插件是用C#编写的,编写出来的行为树也是依赖于C#的,不利于热更,所以有必要写一个lua版本的. 首先下载BehaviorDesigner这个插件,其中部分源码编译在Behavior Designer\Runtime\BehaviorDesignerRuntime.dll中,可以使用.NET Reflector这个工具进行反编译,然后将反编译后的类文件保存,然后用VS打开,就可以方便地查看源码啦.这个插件是自带pdf文档的,…
重点文章: 1.[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 2.[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(中) 3.Lua和C++交互详细总结 4.LuaInterface简介 5.不同版本Lua介绍 6. C#与Lua相互调用 7.在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理 8.Unity3D 预备知识:C#与Lua相互调用 9. Lua for Windows 开始学习Lua编程 10.腾讯开源手游热更新方案,Unity3D下…
cocos luacompile cocos luacompile Overview Usage Available Arguments Samples Overview Compile the .lua files to .luac. Usage cocos luacompile [arguments] Available Arguments arg available value sample description necessary -h, --help - - Show the hel…
如果开发者不想让游戏中的资源或脚本文件轻易的暴露给其他人,一般会采用对文件进行加密的方式来保护文件或资源被盗用.Quick-Cocos2d-x 为开发者提供了xxtea加密算法,用来对脚本文件及资源进行加密,加密对象大体分为如下几种: 1. 对脚本/资源文件本身加密 2. 将脚本/资源文件压缩成zip,对zip进行加密 3. 对脚本/资源文件加密后,再将其压缩后的zip再次加密 首先来演示对脚本文件的加密 1. 创建一个新工程,名为quicktest. 通过控制台进入到该工程目录下,例: cd…
用lua就表示项目用到了热更新,通常每次热更新都会从服务器获取最新的lua脚本放到Android/ios设备的本地目录下,但是lua应该放到哪个目录下呢,这里就先说说lua里面的路径问题 1.不可以放到Resources文件夹下,因为无法找到其在设备下的位置,Resources下的东西是由unity来管理的,使用的时候通过Resources.load/loadAll来加载,而且后缀为lua的文件,无法通过Resources来加载 2.不可以放到StreamingAssets文件夹,因为在设备下S…
    在阅读这篇文章之前,我在处理mono加密问题时,也是参考了雨凇的文章,所以建议先看一下雨凇写的关于加密Dll的文章: 1.Unity3D研究院之Android加密DLL与破解DLL .SO 2.Unity3D研究院之Android二次加密.so二次加密DLL 假装读者已经看过上面的两篇文章了,下面我会记录一下我做的整个加密流程. 一.选取加密Dll的算法     我们主要目的是对程序集:Assembly-CSharp.dll 进行加密,然后修改mono源码,在mono加载Dll的时候进行…
转 http://blog.csdn.net/ZhangDi2017/article/details/61203505 当前版本的Unity(截至Unity5.5.x)中TextAsset类不支持后缀为lua的文件,将lua文件导入到项目中后,其会被识别为类型为DefaultAsset的文件,即不被Unity原生支持.此外在编辑器模式下也无法直接创建lua文件,需要在文件夹中手动进行创建.经过一番探索,简单实现了在编辑器中创建lua文件和预览lua文件的功能. 一.在编辑器下创建Lua文件 打开…
之前运行的行为树,都是一颗总树,那么实际上会有很多的总树,因此需要对行为树进行管理. BTBehaviorManager.lua BTBehaviorManager = {}; local this = BTBehaviorManager; this.isEachFrameCall = false;--是否是每帧调用 this.printTreeStr = ""; this.trees = {}; function this.RunTree() if (isEachFrameCall)…
Parallel节点类似Sequence节点,不同在于Parallel会每帧执行所有的节点.当所有节点返回成功时返回成功,当其中一个节点返回失败时,返回失败并且结束所有的子节点运行. 例如说,给Sequence节点插入一个不断返回Running的行为节点,那么就会造成后面的子节点无法执行,而对于Parallel来说,是不会存在这种阻塞情况的. Parallel.cs namespace BehaviorDesigner.Runtime.Tasks { [TaskDescription("Simi…
在行为树中,需要扩展的主要是行为节点和条件节点.一般来说,每当要创建一个节点时,就要新建一个节点文件.而对于一些简单的行为节点和条件节点,为了去掉新建文件的过程,可以写一个通用版本的行为节点和条件节点,以传入方法的方式来避免新建文件. BTActionUniversal.lua --[[ 通用Action节点 --]] BTActionUniversal = BTAction:New(); local this = BTActionUniversal; this.name = "BTAction…
先看一下之前的条件节点是怎么设计的: BTConditional.lua BTConditional = BTTask:New(); local this = BTConditional; this.taskType = BTTaskType.Conditional; function this:New() local o = {}; setmetatable(o, self); self.__index = self; return o; end BTIsNullOrEmpty.lua --[…
先看一下之前的行为节点是怎么设计的: BTAction.lua BTAction = BTTask:New(); local this = BTAction; this.taskType = BTTaskType.Action; function this:New() local o = {}; setmetatable(o, self); self.__index = self; return o; end BTLog.lua --[[ 参考BehaviorDesigner-Action-Lo…
在上一篇的基础上,可以测试下行为树的嵌套,所谓的行为树嵌套,就是在一棵行为树下的某一个分支,接入另一棵行为树. 以下面这棵行为树为例: TestBehaviorTree2.lua TestBehaviorTree2 = BTBehaviorTree:New(); local this = TestBehaviorTree2; this.name = "TestBehaviorTree2"; function this:New() local o = {}; setmetatable(o…
经过前面的文章,已经把行为树中的四种基本类型节点介绍了下.接下来可以整理一下,打印一下整棵行为树.注意点如下: 1.可以把BTBehaviorTree也当作一种节点,这样就可以方便地进行行为树嵌套了 2.可以在BTBehaviorTree中的SetStartTask.BTParentTask中的AddChild,即在设置节点和添加节点时对节点的信息进行打印 以下面这棵行为树为例: BTTask.lua BTTask = {}; local this = BTTask; function this…
Repeater:重复执行子节点,直到一定次数 特点如下: 1.执行次数可以是无限循环,也可以是固定次数 2.一般来说,子节点的执行返回状态不会影响Repeater节点,但可以设置当子节点返回失败时,结束执行Repeater节点 Repeater的继承关系如下: Repeater->Decorator->ParentTask->Task 因为继承装饰节点,所以其子节点只能有一个 Repeater.cs namespace BehaviorDesigner.Runtime.Tasks {…
条件节点和行为节点,这两种节点本身的设计比较简单,项目中编写行为树节点一般就是扩展这两种节点,而Decorator和Composite节点只需要使用内置的就足够了. 它们的继承关系如下: Conditional->Task Action->Task 代码如下: BTAction.lua BTAction = BTTask:New(); local this = BTAction; function this:New() local o = {}; setmetatable(o, self);…
参考链接:https://blog.csdn.net/u012740992/article/details/79366251 在行为树中,有四种最基本的节点,其继承结构如下: Action->Task Conditional->Task Decorator->ParentTask->Task Composite->ParentTask->Task 对于整棵树,从上往下,可以对其进行分层,从0开始递增:对于树中的子树,从左到右,可以对其子节点标记索引. 那么,这里的整棵树…
Sequence的继承关系如下: Sequence->Composite->ParentTask->Task 上一篇已经实现了简单版本的ParentTask和Task(基于Behavior Designer的源码),那么接下来看下Composite和Sequence. 1.Composite:表明该节点是组合节点,无特殊作用. 2.Sequence: 成员: currentChildIndex:当前运行的子节点索引 executionStatus:当前运行的子节点状态 方法: CanEx…
图片加密的方法有很多种,在cocos2dx中,经常会使用TexturePacker来加密图片,方法如下: 打开TexturePacker,点击Add Sprite添加图片,在output栏下的Texture format选择pvr.gz格式, 点击Content protection加密按钮,创建加密密钥,点击create new key来创建一个新的密钥,clear/disable删除密钥,save as global key可以将当前密钥保存成全局密钥,以后可以使用,use global k…
推荐阅读:  我的CSDN  我的博客园  QQ群:704621321  我的个人博客 一.使用制作滑动列表:使用UILayout做虚拟列表 ui.list = base:findcom("center/ScrollView/Viewport/Content", "UILayout") ui.list.onCreate = base.createrender ui.list.onUpdate = base.updaterender ui.list.ItemRende…