lua tasklib 之lumen 分析】的更多相关文章

sched.sleep分析 sleep会填充M.running_task.waitds数据表示当前task需要等待,最后yield出去到主线程 M.sleep = function (timeout) local sleep_waitd = M.running_task.sleep_waitd sleep_waitd.timeout=timeout M.wait(sleep_waitd) end M.wait = function ( waitd ) assert(M.running_task)…
近日分析某一款Android上面的手游,反编译后再起asset目录下可以看到加密过的脚本,lib目录下发现lua的so 初步怀疑其使用lua脚本实现的 解密函数定位 动态跟踪解密函数流程 静态分析解密函数流程 编写程序进行解密 lib目录下so的名称 1. 解密函数定位. IDA加载SO,导出函数搜索关键字loadbuffer,定位到lua脚本加载的地方.Android so中使用lua脚本需使用loadbuffer函数进行加载该脚本. 2. 动态跟踪解密函数流程. 启动游戏后,动态调试该so,…
参见: https://yoursunny.com/study/IS409/ScoreBoard.htm https://wiki.wireshark.org/LuaAPI/TreeItem https://www.cnblogs.com/zzqcn/p/4840589.html foo.lua --https://www.cnblogs.com/zzqcn/p/4840589.html-- @brief Foo Protocol dissector plugin-- @author zzq--…
一.cocos2dx对tolua++绑定的修正 A.c对lua回调函数的引用 在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟.菜单选择等).如果采用脚本方式编写游戏的话,这些回调函数也是需要写在脚本里的.实现这个功能,就需要lua将自己的函数传递给c++,c++保持对这个函数的引用,不要让这个lua函数被垃圾回收,并在适当的时候回调这个lua函数. 这种需求的一般抽象是在C环境下保存lua状态,在PIL(Programming In Lua)里有比较详尽的描述.可以使用lua…
资源整理: 风云老师博客: http://blog.codingnow.com/eo/luaoeeeaeau/ 知乎: https://www.zhihu.com/question/20736660 http://del.icio.us/musicode/lua --------------------------------------- C语言学到什么程度可以看Lua的源码?修改 除了C语言之外还需要什么能力?如果说是为了培养编程能力,是否有更好的方式? 作者:airtrack链接:http…
何为虚拟机 用于模拟计算机运行的程序.是个中间层,它处于脚本语言和硬件之间的一个程序.每一门脚本语言都会有自己定义的opcode("操作码"),可以理解为这门程序自己定义的"汇编语言".一般的编译型语言,比如C等,经过编译器编译之后生成的都是与当前硬件环境相匹配的汇编代码;而脚本型的语言,经过前端的处理之后,生成的就是opcode,再将该opcode放在这门语言的虚拟机中执行.虚拟机是作为单独的程序独立存在,而Lua由于是一门嵌入式的语言是附着在宿主环境中的. lu…
转自:http://www.runoob.com/manual/lua53doc/manual.html 1 – 简介 Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设施. 同时对面向对象编程.函数式编程和数据驱动式编程也提供了良好的支持. 它作为一个强大.轻量的嵌入式脚本语言,可供任何需要的程序使用. Lua 由 clean C(标准 C 和 C++ 间共通的子集) 实现成一个库. 作为一门扩展式语言,Lua 没有 "main" 程序的概念: 它只能 …
[LuaSrcDiet] (5.0.2) - 通过删除不必要的空白和注释缩减Lua文件的大小. [LuaProfiler] (5.0) - 一个用来查找Lua应用瓶颈的工具time profiler . [LuaCov] - LuaCov 是一个用来对 Lua 脚本进行覆盖率分析的工具.当运行 Lua 脚本时加载了 luacov 模块,那么将会生成一个统计文件,包含每一行脚本和响应模块加载的执行情况. [B:Lua] - 开源项目: 具备各种特征的Lua IDE. [LunaticPython]…
目前抓包的工具不顺手: (1)smartsniff, minisniffer不支持插件 (2)wireshark,omnipeek插件过于复杂,还有不是要装驱动就是admin权限 打算重写一个,第一个版本预计150小时,如果只是简单功能可能50小时就够了,打算做完善一些,也许会有人用得着. 杂乱想法: (1)体积要小,做成单个exe文件,smartsniff, minisniffer都不到200k,所以最终不会超过500k(开发环境用tdm-gcc),程序大小的想法可能有点无聊 (2)gui 使…
1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis 适用场景与实现 [翻译]Redis协议 2.Redis内部实现 Redis源码分析系列文章 Redis运行流程源码解析 Redis 2.6 Lua 脚本功能实现分析 解密Redis持久化 Redis核心解读系列 Redis RDB文件格式全解析 Redis核心解读–集群管理工具(Redis-sent…
redis资源比较零散,引用nosqlfan上的文章,方便大家需要时翻阅.大家看完所有的,如果整理出文章的,麻烦知会一下,方便学习. 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis 适用场景与实现 [翻译]Redis协议 2.Redis内部实现 Redis源码分析系列文章 Redis运行流程源码解析 Redis 2.6 Lua 脚本功能实现分析…
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由乌鸦 发表于云+社区专栏 介绍 Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序.它具有强大的过滤语言和可自定义的输出,以及可以使用称为chisels 的Lua脚本扩展的核心功能. 应用程序通过访问内核来工作, 内核允许它查看每个系统调用以及通过内核传递的所有信息.这也使其成为监视和分析系统上运行的应用程序容器生成的系统活动和事件的出色工具. 核心Sysdig应用程序监视其安装的服务器.但是,该项目背后的公司提供了一个…
原文:Redis资料汇总专题 很多朋友反映,说NoSQLFan上的资料不少,但是要找到自己实用的太难,于是萌生做这样一个专题的想法.通过将不同NoSQL产品从入门到精通的各种资料进行汇总,希望能够让大家更快的找到适合自己的教程或文章进行阅读. 最后更新时间:2013-04-22 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis系统性介绍 一个很棒的Redis介绍PPT 强烈推荐!非同一般的Redis介绍 Redis之七种武器 锋利的Redis redis 适用场景与实现 [翻…
如何高效准确详细的对性能进行剖析?腾讯游戏学院专家Leonn将归纳总结在UE下对每一性能指标的剖析方法,本文重点讲解如何应对CPU帧率瓶颈和卡顿? CPU上帧率低和卡顿是性能优化中最易出现的一部分,尤其对于手游,提到卡,就大概率是在CPU上出现的问题,CPU上的卡顿一般是卡逻辑或是卡渲染,本篇将详细系统的介绍基于UE的手游对CPU瓶颈的剖析方法. 低帧率和卡顿 首先低帧率和卡顿是两种完全不同的瓶颈类型,虽然归根到底都是某个函数执行的过慢引起的,但是定位和解决方法并不一样.低帧率瓶颈是需要统计一段…
前言 前面分析了Redisson可重入锁的原理,主要是通过lua脚本加锁及设置过期时间来保证锁执行的原子性,然后每个线程获取锁会将获取锁的次数+1,释放锁会将当前锁次数-1,如果为0则表示释放锁成功. 可重入原理和JDK中的可重入锁都是一致的. Redisson公平锁原理 JDK中也有公平锁和非公平锁,所谓公平锁,就是保证客户端获取锁的顺序,跟他们请求获取锁的顺序,是一样的.公平锁需要排队,谁先申请获取这把锁,谁就可以先获取到这把锁,是按照请求的先后顺序来的. Redisson实现公平锁源码分析…
因为cryptDB是在mysql-proxy的基础上来实现了,可以看成是为mysql-proxy添加了新的.为mysql-proxy已经为开发人员提供了相应的接口.如果开发人员只需要通过lua脚本语言来实现这些接口就可以为mysql-proxy添加新的功能了.cryptdb的lua就是wrapper.lua.下面我们就分析一下wrapper.lua的使用.…
1  C调用Lua函数的堆栈变化 例子 Lua文件中的函数 function testNewCounter2() return "第四个结果" end C中的例子 void t_new(lua_State *aaa){ } lua_pushstring(aaa, "feifei"); lua_pushcfunction(aaa, t_new); ); printf("倒数第二个的值为%s\n",ccc); lua_getglobal(aaa, &…
drcom_2011.lua是来源于Google code上的一个开源项目中的一个插件,感谢网络大神的分享 需要使用drcom_2011.lua分析drcom协议的话,需要把drcom_2011.lua放到wireshark安装目录下(例如C:\Program Files\Wireshark), 然后打开安装目录的init.lua(用高级一些的文件编辑器打开可以看到换行信息),在最后一行加入dofile("drcom_2011.lua"),保存. 然后重启wireshark,在筛选器那…
tolua++技术分析 cocos2dx+lua 前言 一直都使用 cocos2dx + lua 进行游戏开发,用 Lua 开发可以专注于游戏逻辑的实现,另外一方面可以实现热更新:而且 lua 是一个轻量级的脚本语言,库小但是功能齐全,所以在业内非常受欢迎.之前看了网上很多关于 c/c++ 如何与 lua 互调的讲解,也查看了 lua 官网的 lua api 和 c api,感觉大有收获.最近这一段时间研究了 tolua++ 里面 lua 层调用 c/c++ 的技术实现,准备记录一下学习心得,这…
最近给公司写了一个lua内存分析工具,可以非常方便的分析出Lua内存泄露问题,有图形化界面操作,方便手机端上传快照等功能 内存分析我是在c语言端写的,也有人写过lua端的分析工具,也蛮好用的,不过lua分析工具本身也会影响到lua的内存占用(尽管用的是弱表缓存的),也会有些不准确. Lua方案:https://github.com/yaukeywang/LuaMemorySnapshotDump 然后找到了云风大神写的C语言解决方案 https://blog.codingnow.com/2012…
lua_State 中放的是 lua 虚拟机中的环境表.注册表.运行堆栈.虚拟机的上下文等数据. 从一个主线程(特指 lua 虚拟机中的线程,即 coroutine)中创建出来的新的 lua_State 会共享大部分数据,但会拥有一个独立的运行堆栈.所以一个线程对象拥有一个lua_State. (ps:lua 的coroutine的使用参考: http://blog.csdn.NET/wusheng520/article/details/7954666) lua_State共享的数据部分是全局状…
BehaviorDesigner是Unity上的一款行为树插件,不过这个插件是用C#编写的,编写出来的行为树也是依赖于C#的,不利于热更,所以有必要写一个lua版本的. 首先下载BehaviorDesigner这个插件,其中部分源码编译在Behavior Designer\Runtime\BehaviorDesignerRuntime.dll中,可以使用.NET Reflector这个工具进行反编译,然后将反编译后的类文件保存,然后用VS打开,就可以方便地查看源码啦.这个插件是自带pdf文档的,…
https://www.lua.org/source/5.3/ http://www.cppblog.com/airtrack/archive/2012/09/19/191233.html https://github.com/lichuang/Lua-Source-Internal/blob/master/doc/ch08-GC.md lichuang/Lua-Source-Internal Exploiting Lua 5.1 on 32-bit Windows.md https://apo…
应用程序发送的数据报都是流式的,IP不保证同一个一个应用数据包会被抓包后在同一个IP数据包中,因此对于使用自制dissector的时候需要考虑这种情况. Lua Dissector相关资料可以见:http://wiki.wireshark.org/Lua/Dissectors Lua脚本书写wireshark dissector非常方便,使用Lua合并tcp数据报进行分析的样例如下,其实就是多了一个条件分支,所谓难者不会,会者不难: local slicer = Proto("slicer&qu…
打算新项目转到cocos2dx v3上了,下载代码浏览过后发现改动真是非常大,结构性调整很多. 比如tolua绑定这一块,就几乎全翻新了. 胶水代码的生成,改成了全自动式的,通过clang来分析c++代码,可以准确的知道每一个类.函数.参数的信息,再也不用手动写pkg文件了. 运行期对象管理这块,似乎也有了不少改动,至少我原来的一些扩展代码运行不了了,还没来得及细看,待看完再一一录下. 先记录一下目前已看清楚的[类名表.类元表.对象实例]之间的关系: 1.类元表:最核心的表,在lua代码里是不可…
在创建完cocos2d-x的lua项目后.打开项目的Resources中的extern.lua文件.里面有两个用于面向对象的方法.一个是用于克隆,一个是用于继承. 代码分析例如以下 --克隆一个对象 function clone(object) --用于存储被訪问过的对象的表 local lookup_table = {} local function _copy(object) if type(object) ~= "table" then--假设类别不等于table.返回当前參数…
1.openresty+lua+kafka 1.1 openresty+lua+kafka方案 之前的项目基于nginx反向代理后转发到Tomcat的API接口进行业务处理,然后将json数据打入kafka中,但是随着业务的扩大,访问量越来越大,并发数也很高,导致程序遇到性能问题: 基于nginx的高性能特点,现在考虑使用一种openresty+lua+kafka,直接在nginx阶段将数据打入kafka中,来提高性能. 1.1.1 OpenResty运行原理 Nginx 采用的是 master…
0 预备知识: 至少对Lua手册C API有简单的了解.lua5.3手册中文 1  Lua虚拟机的栈,如图: 假设虚拟机的栈有n个数据: 解释: 两种解释方式: A,栈顶开始, -1 ...-n B,栈底开始,1 ...n 二.运行原理和调用栈机制实例 创建main.lua function LuaFunc(a) return +a,,,; end C++ //①新建虚拟机 lua_State* L = luaL_newstate(); //②载入库 luaL_openlibs(L); //③这…
lua的解释器拿到 lua 编写的源码,首先进行解析,就是进行词法分析和语法分析,将源码转换成 lua 的指令集,然后执行这个指令集. lua 源码: function f(val) return val; end function main() local i = 1; local j = 2; local b = i + f(2); --local b = i + j; print("retval = "..b); return b; end 调用 main 的指令集分析: in…
目录 目录 目录 前言 介绍 安装 下载并拷贝 使用LuaRocks安装 运行测试 使用简介 处理器(processor)创建 通道(channel)创建 负载均衡 会话信息和会话管理 Event Handling NoReturnEvent 和 ReturnedEvent addHandler 和 setHandler Channel Event OnConnectEvent Processor Events BeforeAuthEvent OnAuthEvent AuthSuccessEve…