请教如何用luaios 获取当前版本号游戏的版本号,急等

我的书上或者是我曾经出售的源码里,都有Csv文件的影子。
也许是先入为主吧,我工作那会用的最久的配置文件就是Csv,所以我在很多游戏里都会情不自禁地优先选择它。
Csv文件,格式很简单,就是一行一条数据,字段之间用逗号分隔,策划也可以方便地使用Excel进行编辑。
Csv格式的文件,解析起来也很简单,所以自己动手写写很快~(小若:我就喜欢拿来主义,你怎么着)
最近在用Lua写游戏,对于技能、怪物等配置,我还是选择用Csv~
不得不说,Lua等脚本语言,在某些方面是C++没法比的,这次我就用Csv来表达这种心情~
笨木头花心贡献,哈?花心?不,是用心~
转载请注明,原文地址:
文章来源:
一份Csv配置文件
我们来看看这样一份Csv文件,如图:
ID,Name,Des,Model
ID,名字,描述,图片模型
1,广告,www.benmutou.com,csv.png
2,否认,呵呵,广告什么的,我才不会加,good.png
(小若:这是图吗?是哪里是图啊!)
当然,这样好像不够清晰,我们来这样看看:
这是很简单的一个Csv文件:
第一行是英文名字,很重要,因为在代码里我们要通过这个名字来获取对应的字段内容。
第二行是中文名字,没什么作用,主要是给那些小白看的,比如旁白什么的。(小若:你的比如能不能不要这么有针对性?)
第三和第四行才是真正的内容,通常我都会给第一个字段设定为ID,这样可以根据ID轻松获取到对应行的内容。
Cocos Code IDE
OK,在读取Csv文件之前,稍微提一下这个IDE,它是Cocos2d-x官方出的一个IDE,专门针对Cocos2d-x+Lua、Cocos2d-x+JS,但不支持Cocos2d-x+C++。
虽然目前这个IDE还是RC版本,我是比较喜欢尝鲜的人,Cocos2d-x3.0版本我也是从Alpha玩起的~
就那句什么,“有坑才有成长”,我是这么认为的~
本文也是基于Cocos Code IDE来讲解,所以稍微提一下,IDE可以到官网下载,随便看看入门指引,几分钟的事情。
然后创建一个项目。
字符串分割
好了,项目创建完之后,默认有个main.lua和GameScene.lua,我们只需要在main.lua里做做测试就可以了
Csv是用逗号分割的,所以,字符串分割功能,必不可少,Lua似乎没有提供这个功能,幸好,这很简单。
在mian.lua里main函数前面添加一个函数:
12345function split(str, reps)
local resultStrsList = {};
string.gsub(str, '[^' .. reps ..']+', function(w) table.insert(resultStrsList, w) end );
return resultStrsList;
split有两个参数,str当然就是准备被分割的字符串了,reps又当然是分隔符了~
这里用到了string库的gsub函数,共三个参数:
1. str ,待分割的字符串
2.'[^’ .. reps ..’]+’,这一看就是那什么,正则表达式,这货我很少用,所以每次用的时候就翻文档,用完就忘。
这里还比较简单,比如reps是逗号,那么,就变成 ‘[^,]+’
,这个表达式的意思是:查找非逗号字符,并且多次匹配~
比如“heab,”,前面的heab都不是逗号,所有都匹配了,直到发现了第五个字符,它是逗号,停止匹配,于是最终匹配的字符串是“heab”。
(来自的说明:这里其实不是正则表达式,而是Lua里的“模式”,跟正则表达式不完全一样,但这里的解释仍然是行得通的,所以不用担心。)
3.每次分割完的字符串都能通过回调函数获取到,w参数就是分割后的一个子字符串,把它保存到一个table
OK,就这么简单,这样就能得到一个table,table里保存了所有被分割的子字符串。
测试一下,把默认的main函数的代码都删了,改成下面这个样子:
1234567local function main()
& local t = split(&nihfao,hehe,hen&, &,&);
& for k, v in pairs(t) do
& & & print(v);
然后按F11运行,输出以下日志:
[LUA-print] nihfao
[LUA-print] hehe
[LUA-print] hen
真正的解析Csv
我们的重点来了,解析Csv文件。
我们不仅仅是要解析,解析完,还要保存起来,方便以后取配置数据~
所以,为了以后更方便地读取数据,我想了一个好办法。
来看看代码,在mian函数的上面再加一个新函数:
123456789101112131415161718192021222324252627282930function loadCsvFile(filePath)
& -- 读取文件
& local data = cc.FileUtils:getInstance():getStringFromFile(filePath);
& -- 按行划分
& local lineStr = split(data, '\n\r');
& --[[
& & & & & & & 从第3行开始保存(第一行是标题,第二行是注释,后面的行才是内容)
& & & & & & & 用二维数组保存:arr[ID][属性标题字符串]
& ]]
& local titles = split(lineStr[1], &,&);
& local ID = 1;
& local arrs = {};
& for i = 3, #lineStr, 1 do
& & & -- 一行中,每一列的内容
& & & local content = split(lineStr[i], &,&);
& & & -- 以标题作为索引,保存每一列的内容,取值的时候这样取:arrs[1].Title
& & & arrs[ID] = {};
& & & for j = 1, #titles, 1 do
& & & & & arrs[ID][titles[j]] = content[j];
& & & ID = ID + 1;
& return arrs;
是不是很简单?(小若:简单个毛线啊!)
这可比在C++里解析要简单多了~
一句句来分析吧:
1.通过FileUtils的getStringFromFile函数读取文件,取得字符串内容
2.local lineStr = split(data, ‘\n\r’); 通过split函数,把文件内容按行分割,得到一个lineStr,它存放了每一行的内容
3.local titles = split(lineStr[1], “,”); 还记得我们的Csv文件吗?第一行内容是英文字母,它们很重要
这里把文件的第一行内容用逗号分割,得到titles,它存放了第一行的每一个字段。
这些字段有什么用呢?以后我们将通过这些字段来获取配置数据。
4.接着,新建一个table变量:local arrs = {}; 它将完整地保存解析后的Csv文件数据。
5.接下来有两个for循环,先来看第一层循环:
for i = 3, #lineStr, 1 do
— 一行中,每一列的内容
local content = split(lineStr[i], “,”);
很早之前我们说过了,Csv的第一行是英文字段、第二行是中文解释,第三行才开始是真正的内容~所以我们要从第三行开始。
我们知道,Lua的table下标是从1开始的,于是,i的初始值为3
lineStr里存放的是每一行的内容,所以,第一层的for循环是为了取出每一行的内容,然后按逗号分割,保存到content变量里。
接下来,看第二层循环:
— 以标题作为索引,保存每一列的内容,取值的时候这样取:arrs[1].Title
arrs[ID] = {};
for j = 1, #titles, 1 do
arrs[ID][titles[j]] = content[j];
arrs[ID] = {}是什么意思呢?这代表是一行的内容,arrs[ID]可以看做是一个数组,它保存了某一行的数据。
那么,arrs[ID]数组的下标自然就是我们的英文字母了(也就是之前一直说的,很重要的第一行内容)。
逻辑有点乱,我们慢慢理解:
虽然content保存了每一行的内容,但是它不方面获取数据,因为它的下标是数字。
所以,我们要把content的内容一个个复制到arrs[ID]里,把数字下标全部换成英文字符串。
第二层for循环就是在做这么一件事情。
好了,就这么解释肯定还有点混乱吧,来测试一下就知道我倒底在说什么了。
修改main函数内容为:
123456local function main()
& local csvConfig = loadCsvFile(&res/Mutou.Csv&);
& print(csvConfig[1].Name .. &:& .. csvConfig[1].Des);
& print(csvConfig[2].Name .. &:& .. csvConfig[2].Des);
按F11运行,将输出以下日志:
[LUA-print] 广告:www.benmutou.com
[LUA-print] 否认:呵呵,广告什么的,我才不会加
首先,loadCsvFile会解析Csv文件,然后返回解析后的内容。
接着,我想获取ID为1的配置数据,比如,要获取它的Name字段属性,就非常简单了:csvConfig[1].Name 就可以了~
如果你对Lua的table比较生疏的话,你可能会无法理解本文的“精髓”(小若:因为根本就没有精髓啊!)
关于Lua的table,大家可以看看我的这篇文章,相信你会对table有一个初步的了解(足以看懂这篇文章)
巧说table的几种构造方式:
我个人是认为这么做很方便,我不是说这么解析很方便,而是,解析之后,要获取字段值的时候,很方便~
以后要给配置文件新增字段的话,对于解析和使用都完全没有影响,这是最舒服的地方。
当然了,这就要求我们的配置文件的第一行一定不能写错了,否则就不太好玩了。
如果是在C++里,可能就没法达到这么方便的程度了,虽然也能模仿,通过getValue(“key”)这样的方式也行~
但不管怎么说,还是不如脚本来得自然~
虽然它方便,但对于全脚本开发手游,还是不太舒服,有些地方,脚本完全比不上C++(不是指运行效率)~
好了,就说这么多~不拉仇恨了~Lua为什么在游戏编程领域被广泛运用?
来源:互联网
责任编辑:王强字体:
相关解决方法如下:Lua 为什么在游戏编程领域被广泛运用non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都没有听到过。所以说,Lua 在游戏领域被广泛运用只是 Lua 被所有领域广泛应用的显现。
Lua 能得到广泛应...为什么要学Lua编程语言相对于脚本语言来说,LUA体积小,速度快。
安全性高,做游戏脚本的不二选择Lua脚本编程 和 游戏编程 哪个待遇好??哪个更容易上手? 只需从常理推断:很容易上手的,待遇会高吗lua游戏案例案例本人也想要来学学,还没碰到
不过可以提供给你一个初级指南,对于想入门LUA的人甚至是没有编程基础的人来说都可算很简单的,而且是相应针对游戏编程来指导的哦
菜...现在我想学习Lua,零基础 主要学会写脚本就可以 ? 怎么去学 主...in lua 中文版或者beginning lua programming,结合lua本身的联机帮助学习。都熟悉了之后可以看game programming with python,lua and ruby, 了解Lua在游戏编程中的作用。如果...Lua这门编程语言有什么特点?一般用来开发什么项目?为什么?直脚本语言,相于其语言习起简单般用于游戏脚本(剧情,物属性)作其语言扩展性语言lua语灵c++游戏逻辑核lua游戏表层我能看剧情物些东西c++编写接口做交互 &&LUA脚本语言在网络游戏编写中主要是干什么用的?主要用途是:
(1)描述界面:WOW和剑网三的界面都是用LUA写的;
(2)沟通引擎:游戏图形引擎提供了一些接口库,可以在LUA中调用;
(3)服务器端:有些游戏,例如剑网三,在服务器...大哥 我是进入游戏行业的菜鸟 像Lua脚本语言如何下手?还有 D...没学过编程的话 那确实不好教 如果有编程基础的话 去买本 programming in lua 就是黄底红字的那本 全书浏览过一遍后再开始动手写代码 买纸质的书 别看电子书 电子书看了很...请问,有人看过"lua程序设计第二版"这本书吗??lua和python是最常见的两种游戏内使用的脚本语言,lua程序设计只会讲lua语言的一些内容,具体不会讲怎么使用在游戏里,或者跟其他语言怎么结合。
具体游戏中的例子可以查...LUA脚本语言在网络游戏编写中主要是干什么用的?是被主程序所调用的一种脚本 如同javascripLUA为什么在游戏编程领域被广泛运用答:Lua 被运用的领域远不止游戏。我的感觉是:游戏是一个更容易被大多数人认识到的领域。比如说 Adobe Photoshop Lightroom 的 40% - 60% 由 Lua 写成。版本 3.0 之后几乎没有新的 non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都...Lua 为什么在游戏编程领域被广泛运用答:Lua 被运用的领域远不止游戏。我的感觉是:游戏是一个更容易被大多数人认识到的领域。比如说 Adobe Photoshop Lightroom 的 40% - 60% 由 Lua 写成。版本 3.0 之后几乎没有新的 non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都...Lua 为什么在游戏编程领域被广泛运用答:1.因为某位业界前辈这么用了(真的) 2.比较好用,语法简单功能强而且与c结合紧密Lua 为什么在游戏编程领域被广泛运用答:Lua 被运用的领域远不止游戏。我的感觉是:游戏是一个更容易被大多数人认识到的领域。比如说 Adobe Photoshop Lightroom 的 40% - 60% 由 Lua 写成。版本 3.0 之后几乎没有新的 non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都...Lua 为什么在游戏编程领域被广泛运用答:国内而已。为什么很多游戏公司都用lua,有什么渊源答:游戏是一个更容易被大多数人认识到的领域。所以说。 Lua 能得到广泛应用Lua 被运用的领域远不止游戏.0 之后几乎没有新的 non-Lua 代码加入。但是大多数非专业人士连 Lightroom 这个名字都没有听到过。我的感觉是。版本 3,是因为它完全符合 Rich...
最新添加资讯
24小时热门资讯
Copyright ©
haoxyx.com All Rights Reserved. 好心游戏网 版权所有
京ICP备号-1 京公网安备02号&>&&>&&>&正文
GTA5MOD安装教程 GTA5MOD怎么用
18:11:41 来源:3DM论坛 作者:w
第1页:玩MOD必备的插件
  GTA5MOD可以极大地丰富游戏乐趣,可能很多玩家下载了GTA5MOD之后并不知道怎么用,下面为大家带来“w”分享的GTA5MOD安装教程,讲的比较详细,针对不会安MOD的新手玩家,图文并茂手把手教你安装GTA5MOD,有兴趣的朋友可以学习学习。
  本文讲解主流MOD安装教程,适用于想自己“动手安装MOD”和“曾经安装MOD失败或者遇到问题”的朋友。
  如果你有幸点进此贴,并耐心看完,跟我一步一步操作,保证99%的MOD都可顺利安装成功(其实安装MOD没有想象的那么困难)。我尽量说的详细一些,希望大家都可以玩到自己想玩的MOD。
  GTA5已经问世很久了,销量惊人,玩家规模庞大,不仅有丰富的线上模式,在线下也可以玩各种各样的MOD(例如:钢铁侠啊绿巨人啊恶灵骑士等等等),也可以说MOD赋予了游戏第二次生命。本贴介绍一些常见的MOD安装方法,分享一下本人装MOD的心得。
  很多朋友会发现,网上充斥着大量的MOD,自创的、搬运的,但是点击进去一头雾水(大神;有装MOD经验的另说)对于MOD新手来说不是“太友好”不是太详细,有甚者干脆啥都不写。好,废话不多说,咱们进入正题,开始准备工作。
  如果你是正版玩家就不要折腾MOD了,很多老MOD都玩不了,而且还有被封号的风险,当然你也可以选择MOD安装器,玩MOD还是免安装版实在,可劲折腾,如果硬盘够大正版与免安装版可以共存。
  玩MOD要准备一套干净的游戏本体,玩单机和MOD没有必要升级到太高的版本,1.33版以上更新的大多数都是线上内容,首推1.33版本,因为游戏升级到1.33的时候已经有超多的MOD出现,并且1.33版对大多数MOD支持的都很好,最起码支持目前市面99%的MOD,那咱们这贴就以1.33版本为例。这里提到的1.33是线上版本号,线上1.33对应的本地版本号是1.0.678.1,可以进入游戏在过场动画右下角看到自己游戏的版本号。
  下载完游戏本体先进入一次游戏看看能不能顺利运行,然后再开始安MOD。
  必备的游戏运行库要全,例如c++和Microsoft.Net Framework 4.5.2以上版本什么的,然后进行下一步。
玩MOD必备的插件
  介绍玩MOD必备的插件(就是几个文件而已),必备插件有:ScriptHookV& 和& ScriptHookVDotNet 这两个是必备的(这两个插件也是有版本的),注意ScriptHookV的版本一定要与游戏本体的版本号对应(否则游戏报错),ScriptHookVDotNet这个版本号只与你想下的MOD有关(理论上ScriptHookVDotNe版本越新越好),一般ScriptHookVDotNet v2.9.2通杀所有MOD,当然有些MOD需要特定版本的ScriptHookVDotNet。
  开始安装必备插件(咱们以上面提到的,线下版本1.0.678.1线上版本1.33为例)
1.安装ScriptHookV
  把ScriptHookV_1.0.678.1压缩文件解压出来,然后把bin文件夹里有3个文件只把这2个(dinput8.dll&ScriptHookV.dll)复制到GTA5游戏根目录,NativeTrainer.asi 这个是修改器是英文版可以不复制,稍后我会提供一个中文版修改器。
  下载地址:
2.安装ScriptHookVDotNet
  把ScriptHookVDotNet v2.9.2压缩文件解压出来,然后把文件(README.md&ScriptHookVDotNet.asi&ScriptHookVDotNet.dll ScriptHookVDotNet.ini&ScriptHookVDotNet.xml)复制到GTA5游戏根目录,LICENSE.txt是说明文件可以不复制。
  下载地址:
3.安装NativeUI.dll
  这个是有些MOD呼出之后用到的UI界面文件,下面提供个MapEditor v2.13地图编辑器中文版,里面自带NativeUI.dll 这个文件,如果要玩恶灵骑士,绿巨人等MOD需要用最新的把这个NativeUI.dll 替换掉,后面会讲。解压后直接复制scripts文件夹到你的GTA5.exe游戏根目录,这样也省着你自己创建scripts文件夹了。
  下载地址:
  提供一个中文线下单机修改器,NativeTrainer 不敢说是最新最全最好使,但应付一般的MOD与进行线下单机游戏足够了(日后刷载具可能会用到)当然你也可以下载其他的修改器,解压后把NativeTrainer.asi 跟NativeTrainerConfig.xml 复制到GTA5游戏根目录,进入游戏默认F4呼出,小键盘5确定,8 2上下,4 6翻页,0返回。
  下载地址:
4.安装 LUA Plugin for Script Hook V 10.1
  为以后运行LUA格式的MOD做准备。把LUA Plugin for Script Hook V 10.1.zip解压后得到scripts和LUA.asi,把scripts文件夹里面的文件复制进GTA5游戏目录scripts文件夹里,把LUA.asi复制进GTA5游戏根目录。
  下载地址:
  如果以上操作无误,打开你的GTA5.exe游戏根目录会有这些文件(见下图),尽量记住这些文件名,如果你不打算升级你的游戏版本那这些文件就是“死的”以后就不要动了,例如有些MOD文件夹里也提供以上这些文件,不要覆盖复制,下面会详细提到。
  scripts 文件夹里面应该有的文件↓↓↓↓
  好,如果上面的步骤你操作无误,对比一下也有这些文件了,进入一次游戏,做个任务看看有没有崩溃报错(顺便按一下F4默认键,看看修改器能不能正常呼出正常使用),如果没有,那么恭喜你已经具备MOD运行的前置条件了,你可以去下载你喜欢的MOD。
  MOD作者一般都有安装说明,没有说明的,一般的脚本MOD 像xxx.dll格式的文件一般都是复制进scripts文件夹里,有些是需要你复制进GTA5.exe游戏根目录,MOD说明文件里都有标明,如果没有说就得一个一个试了。
  删除MOD就是把MOD文件删除即可。
  距你成功安装MOD不远了,坚持住朋友们,继续往下看。
《GTA5》精华文章推荐
更多相关内容请关注:
责任编辑:Agent
友情提示:支持键盘左右键“← →”翻页
本文是否解决了您的问题
文章内容导航
第1页:玩MOD必备的插件
用手机访问
扫一扫,手机浏览
相关攻略:
游戏制作:Rockstar Games
游戏发行:Rockstar Games
游戏平台:PC/Xbox360/XboxOne/PS3/PS4
上市时间:
单机游戏下载
综合热点资讯查看: 2934|回复: 302
转载 - Lua游戏逆向及破解方法介绍
TA的每日心情怒 14:35签到天数: 385 天连续签到: 1 天[LV.9]以坛为家II帖子交易币下载币
背景介绍随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台。Lua脚本编写逻辑的手游也是越来越多,如梦幻西游、刀塔传奇、开心消消乐、游龙英雄、奇迹暖暖、疾风猎人、万万没想到等手游。随着Lua手游的增加,其安全性更值得关注,在此归纳一些常用的分析方法,同时介绍一些辅助工具。
识别Lua游戏Android平台的apk包可以直接解压,找到./lib目录下的so逻辑模块,一个个分析其so,寻找是否内嵌lua引擎(一般情况下,最大的so最有可能内嵌lua引擎)。如果有libcocos2dlua、libhellolua字样,其内嵌lua引擎的可能性极大。将可疑so拖入,查看lua引擎字符串,找到如图1所示的lua引擎内字符串,那该手游基本就可以确定是内嵌了一个lua引擎,有极大可能是用lua编写游戏逻辑。&&图1. Lua引擎相关字符串
也可以配合留意下解压出来的assets目录下,是否包含脚本信息。这类信息一般是加密的(也有很多安全意识薄弱的是直接lua脚本明文存放的),但有个明显特征是:有多个文件存放。如图2和图3所示,分别是两款非常火热的Lua手游的assets目录下的lua脚本信息。其中D手游仅是对luac进行加密,而M手游则是连名字也弄个哈希加密。
& && && && &&&图2. Lua手游asserts下可疑脚本信息案例手游D& && &图3. Lua手游asserts下可疑脚本信息案例手游M
破解思路Lua手游的破解主要分成两步,一步是能获取游戏lua脚本;第二步是替换lua脚本。核心是找到lua脚本,然后修改生效。不同安全级别的手游,相应的lua脚本获取时机点会有所不同。(本质是沿着Lua引擎加载lua脚本的整条加载链,如图4所示,去不断分析找到合适时机点dump和替换。)
另一类思路,是辅助工具常用的方法,比如叉叉的lua手游辅助。只需要获取游戏lua脚本信息,然后无需替换,而是直接加载自身的一个lua脚本(该脚本和游戏脚本在同一个命名空间,可直接修改游戏脚本数据,调用函数)。
一、 直接assets资源可获取lua脚本这类比较初级,在assets目录下可获得lua或者luac源码。针对lua源码类型,直接修改然后apktool重打包即可。针对luac源码类型(luac是lua编译的lua字节码文件,包含lua脚本所有信息,具体可搜索lua字节码文件结构),可以使用unluac等开源项目/工具反编译回lua源码。然后修改直接替换回修改后的lua源码文件即可(lua引擎加载脚本的时候,会识别luac magic number判断是lua源码还是luac,直接替换源码下去是不会影响脚本加载执行的)。
二、 在luaL_loadbuffer函数处获取luaL_loadbuffer是一个走得比较频繁的加载点。Cocos引擎的lua加载器为cocos2dx_lua_loader,如图4所示,最终都是调用luaL_loadbuffer函数来加载。一般厂商会在这层上面对lua脚本进行解密,既是在luaL_loadbuffer函数获取buff参数可得到解密后的lua脚本。修改逻辑后可以直接在这个点替换回去。& && && && &图4. cocos2dx_lua_loader函数
三、 更底层的reader函数处获取lua引擎加载lua脚本最底层是到lua_reader函数。该函数负责最底层的脚本buff遍历,因此在此处dump出来的lua脚本是最纯正的lua脚本,所有加密都已经被去除(修改lua opcode或者引擎逻辑除外)。不过这个点的获取不到足够的文件信息(文件名、buff index等),需要配合上层函数拼凑lua脚本。
常用工具一、 IDA工具可以进行动态调试和静态分析的工具,能在合适的位置下断点,修改指定寄存器和编写IDC脚本配合分析(这里可用来dump luac文件),不多介绍。
二、 ChunkSpy用于解析lua字节码文件结构,方便luac的学习与阅读。
三、 unluacUnluac是一个lua反编译器开源项目,可将luac文件反编译为lua代码。针对梦幻西游、刀塔传奇等修改了lua opcode的手游,在静态分析确认还原opcode后,可修改这个项目打包出个对应版本的反编译工具(直接修改OpcodeMap.java里的map,改成对应游戏修改后的Opcode即可)。
常用逻辑修改方法(1)修改全局变量(全局配置之类的)(2)update函数的调用逻辑修改(不update或者update多次)(3)敌人类、主角类、武器类、技能的初始化过程,属性修改(4)一些过程处理函数的逻辑修改(如伤害计算、命中部位判定等)
实战案例案例一:修改全局变量(开心消消乐暴分)在lua_reader函数可直接dump出游戏lua源码,在其/zoo/gamePlay/GamePlayConfig.lua文件中配置了游戏分数奖励等属性,修改如图5 所示为几个特效额外得分即可轻松暴分。
图5. 开心消消乐分数配置表
案例二:多次调用游戏响应函数(刀塔传奇快速战斗)这里给出叉叉的一个例子。叉叉针对刀塔传奇有相应的辅助,其中快速战斗实现如图6 所示:是通过HOOK了update函数(lua中函数名是指针,备份原先函数指针,直接重写即可实现HOOK),在update函数尾调用10次tick实现。
图6. 叉叉实现快速战斗
案例三:修改函数内部逻辑(开心消消乐增加步数)在lua_reader函数可直接dump出游戏lua源码,如图7 所示:MoveMode::useMove函数负责处理步数扣除,直接修改为增加10步即可实现步数增加功能。图7. 开心消消乐步数修改
小结Lua手游相对来说,还是不够安全的。因为lua引擎不仅是开源的,而且相对python等脚本引擎更简单。外挂作者在lua引擎底层如鱼得水。上面介绍的分析破解思路,就是沿着lua引擎加载脚本的函数链进行分析,找到一个解密后的点dump出脚本,针对脚本进行详细分析,尝试构造攻击点游戏实现外挂功能。
免责声明 []
1、文章内容所有言论和图片纯属会员个人意见,与本论坛立场无关;
2、文章内容有可能转载自其它媒体,本站并不赞同其观点和对其真实性负责;
3、如文章内容侵犯到任何法规、版权等问题,请立即告知本站,本站将及时予与删除并致以最深的歉意;
4、内容仅供学习交流不得用于任何商业用途,下载试用请于24小时内自行删除,因使用所造成的损失全部由使用者本人承担;
欢迎加入起易安卓逆向交流群:
该用户从未签到帖子交易币下载币
编程初步, 积分 15, 距离下一级还需 15 积分
编程初步, 积分 15, 距离下一级还需 15 积分
帮你顶下哈!!
该用户从未签到帖子交易币下载币
小有名气, 积分 183, 距离下一级还需 17 积分
小有名气, 积分 183, 距离下一级还需 17 积分
TA的每日心情开心4&天前签到天数: 28 天连续签到: 1 天[LV.4]偶尔看看III帖子交易币下载币
编程高手, 积分 824, 距离下一级还需 776 积分
编程高手, 积分 824, 距离下一级还需 776 积分
找到好贴不容易,我顶你了,谢了
TA的每日心情无聊 18:50签到天数: 10 天连续签到: 1 天[LV.3]偶尔看看II帖子交易币下载币
小有名气, 积分 141, 距离下一级还需 59 积分
小有名气, 积分 141, 距离下一级还需 59 积分
路过,学习学习
该用户从未签到帖子交易币下载币
小有名气, 积分 51, 距离下一级还需 149 积分
小有名气, 积分 51, 距离下一级还需 149 积分
资源不错,楼主您辛苦了。。。
该用户从未签到帖子交易币下载币
小有名气, 积分 61, 距离下一级还需 139 积分
小有名气, 积分 61, 距离下一级还需 139 积分
谢谢分享资源
TA的每日心情开心 22:43签到天数: 1 天连续签到: 1 天[LV.1]初来乍到帖子交易币下载币
名动一方, 积分 357, 距离下一级还需 43 积分
名动一方, 积分 357, 距离下一级还需 43 积分
找到好贴不容易,我顶你了,谢了
该用户从未签到帖子交易币下载币
编程初步, 积分 21, 距离下一级还需 9 积分
编程初步, 积分 21, 距离下一级还需 9 积分
不错 支持下
TA的每日心情开心 00:13签到天数: 1 天连续签到: 1 天[LV.1]初来乍到帖子交易币下载币
编程初步, 积分 30, 距离下一级还需 0 积分
编程初步, 积分 30, 距离下一级还需 0 积分
资源不错,楼主您辛苦了。。。
站长推荐 /1
请关注易锦教育公众号,课程研发、职业规划、最新通告、企业风采等全都在这里啦!-关注惊喜不断哦...
Powered by

我要回帖

更多关于 lua 输出版本号 的文章

 

随机推荐