如何学习 LUA脚本的逆向破解

在线开通VIP会员联系QQ:
在线开通VIP会员联系QQ:&
查看: 4988|回复: 414
Debuggo论坛VIP教程-逆向工程系列教程
TA的每日心情擦汗4&天前签到天数: 138 天[LV.7]常住居民III主题帖子合购币
合购币6366 枚
放在网盘里有一段时间了,发出来给大家学习吧,Debuggo已经倒闭有人说是骗子,是不是我也不晓得,教程应该还可以
加入VIP全站无限制下载,淘宝开通地址:
QQ截图21.gif (16.18 KB, 下载次数: 4)
16:01 上传
下载地址:
游客,如果您要查看本帖隐藏内容请
TA的每日心情无聊4&天前签到天数: 367 天[LV.9]以坛为家II主题帖子合购币
合购币1081 枚
谢谢楼主的分享!
TA的每日心情擦汗 23:17签到天数: 200 天[LV.7]常住居民III主题帖子合购币
合购币1565 枚
嗯嗯嗯嗯嗯嗯嗯
TA的每日心情怒 22:27签到天数: 136 天[LV.7]常住居民III主题帖子合购币
□武林中人■, 积分 1118, 距离下一级还需 82 积分
□武林中人■, 积分 1118, 距离下一级还需 82 积分
合购币517 枚
非常不错啊,感谢楼主无私的共享精神!
TA的每日心情怒 22:27签到天数: 136 天[LV.7]常住居民III主题帖子合购币
□武林中人■, 积分 1118, 距离下一级还需 82 积分
□武林中人■, 积分 1118, 距离下一级还需 82 积分
合购币517 枚
额 这个在HK昨天也发布了,哈哈
TA的每日心情慵懒 09:52签到天数: 395 天[LV.9]以坛为家II主题帖子合购币
合购币1354 枚
太给力了,这么多好东西!
TA的每日心情擦汗 18:10签到天数: 148 天[LV.7]常住居民III主题帖子合购币
◇叱咤风云◆, 积分 1425, 距离下一级还需 2075 积分
◇叱咤风云◆, 积分 1425, 距离下一级还需 2075 积分
合购币752 枚
不错,楼主给力!
TA的每日心情无聊 23:11签到天数: 66 天[LV.6]常住居民II主题帖子合购币
♢身怀武艺♦, 积分 563, 距离下一级还需 137 积分
♢身怀武艺♦, 积分 563, 距离下一级还需 137 积分
合购币251 枚
要的就是你谢谢分享
TA的每日心情奋斗4&天前签到天数: 81 天[LV.6]常住居民II主题帖子合购币
合购币462 枚
谢谢楼主的分享!
TA的每日心情开心昨天&08:41签到天数: 457 天[LV.9]以坛为家II主题帖子合购币
合购币1359 枚
楼主辛苦了,支持一下。
终身VIP会员
论坛尊贵VIP标志
各个版块管理人员TA的最新馆藏[转]&:转载时请以超链接形式标明文章原始出处和作者信息及本声明
Lua是一个小巧的脚本语言。
Lua由标准c编写而成,无强大的库,不适合作为开发独立应用程序的语言。
Lua很容易被c/c++代码调用,也可以反过来调用c/c++函数。也可也作为普通的配置文件,代替xml、ini等文件格式,并且更容易理解和维护。
一个完整的lua解释器不超过200k,在目前所有脚本引擎中,lua的速度是最快的,这一切都决定了lua作为嵌入式脚本的最佳选择。
lua不像shell和python,linux下,lua需要安装自己的包来支持编译和运行
单行注释,连续两个减号&--&表示注释的开始,一直延续到行末位置。
多行注释,由&&[[&表示注释开始,并且一直延续到&]]&为止,相当于c语言的&/*&..*/&,&[[&和&]]&是可以嵌套的。
在lua中,语言之间可以用分号&;&隔开,也可也用空白隔开。一般来说如果多个语句写在同一行的话,建议总是用分号隔开。
Lua有好几种程序控制语句,如:
条件控制:if条件then&elseif条件then&else&end
While循环:while条件do&end
Prepeat循环:repeat&until条件
For循环:for变量=初值,终点值,步进do&end
For循环:for变量1,变量2,&,变量N in表或枚举函数do&end
注意一下,for循环变量总是只作用于for的局部变量,你可以省略步进制,这时候,for循环会使用1作为步进制。
可以用break终止一个循环。
C、c++用&{&和&}&括起来,lua中用do和end括起来。
如:do print(&Hello&)
赋值语句:
赋值语句在lua中被强化,他可以同时给多个变量赋值
a,b,c,d=1,2,3,4
甚至是:a,b=b,a---多么方便的交换变量功能
变量默认为全局
在默认情况下,变量总是认为全局的。假如你想定义局部变量,则在第一次赋值的时候,需要用local说明,如:
a,b,c=1,2,3---a,b,c都是局部变量
和c语言一样,支持+,-,*,/,lua还多了一个&^&,表示指数乘方运算,如2^3结果为8
字符串连接符..
连接两个字符串,可以用&..&运算符,如:
&this a &..&string&
&等于&this a string&
&(小于) &(大于) &=(小于等于) &=(大于等于) ~=(不相等)=(相等)
所有这些操作符总返回true或false
对于table,function和userdata类型的数据,只有==和~=可以用。先跟表示两个变量引用同一个数据。
and,or,not
其中,and 和 or 与C语言区别特别大。
  在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
b:如果a为false,则返回a;否则返回b
b:如果 a 为true,则返回a;否则返回b
  举几个例子:
  print(4
and 5) --& 5
  print(nil
and 13) --& nil
  print(false
and 13) --& false
  print(4
or 5) --& 4
  print(false
or 5) --& 5
在Lua中这是很有用的特性,也是比较令人混洧的特性。
运算符优先级
从高到低顺序如下:
..(字符串连接)
& & &= &= ~= ==
Lua关键字是不能作为变量的,如下几个
and break do else elseif
false for function if
local nil not or
  repeat
return then true until while
怎么确定一个变量是什么类型的呢?大家可以用type()函数来检查。Lua支持的类型有以下几种:
  Nil 空值,所有没有使用过的变量,都是nil。nil既是值,又是类型。
  Boolean
  Number
数值,在Lua里,数值相当于C语言的double
  String
字符串,如果你愿意的话,字符串是可以包含'\0'字符的
关系表类型,这个类型功能比较强大,我们在后面慢慢说。
  Function
函数类型,不要怀疑,函数也是一种类型,也就是说,所有的函数,它本身就是一个变量。
  Userdata
嗯,这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。
Thread   线程类型,在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。如果感兴趣的话,可以去看看Lua的文档。
变量的定义
所有的语言,都要用到变量。在Lua中,不管你在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非,你在前面加上"local"。
这一点要特别注意,因为你可能想在函数里使用局部变量,却忘了用local来说明。
至于变量名字,它是大小写相关的。也就是说,A和a是两个不同的变量。
  定义一个变量的方法就是赋值。"="操作就是用来赋值的
我们一起来定义几种常用类型的变量吧。
  正如前面所说的,没有使用过的变量的值,都是Nil。有时候我们也需要将一个变量清除,这时候,我们可以直接给变量赋以nil值。如:
  var1=nil
-- 请注意 nil 一定要小写
B. Boolean
  布尔值通常是用在进行条件判断的时候。布尔值有两种:true 和 false。在Lua中,只有false和nil才被计算为false,而所有任何其它类型的值,都是true。比如0,空串等等,都是true。不要被C语言的习惯所误导,0在Lua中的的确确是true。你也可以直接给一个变量赋以Boolean类型的值,如:
  varboolean
  在Lua中,是没有整数类型的,也不需要。一般情况下,只要数值不是很大(比如不超过100,000,000,000,000),是不会产生舍入误差的。在很多CPU上,实数的运算并不比整数慢。
  实数的表示方法,同C语言类似,如:
4.57e-3 0.3e12 5e+20
  字符串,总是一种非常常用的高级类型。在Lua中,你可以非常方便的定义很长很长的字符串。
  字符串在Lua中有几种方法来表示,最通用的方法,是用双引号或单引号来括起一个字符串的,如:
  "This is a
  和C语言相同的,它支持一些转义字符,列表如下:
  \a bell
  \b back space
  \f form feed
  \n newline
  \r carriage return
  \t horizontal tab
  \v vertical tab
  \\ backslash
  \" double quote
  \' single quote
  \[ left square
  \] right square
  由于这种字符串只能写在一行中,因此,不可避免的要用到转义字符。加入了转义字符的串,看起来实在是不敢恭维,比如:
  "one line\nnext
line\n\"in quotes\", 'in quotes'"
  一大堆的"\"符号让人看起来很倒胃口。如果你与我有同感,那么,我们在Lua中,可以用另一种表示方法:用"[["和"]]"将多行的字符串括起来,值得注意的是,在这种字符串中,如果含有单独使用的"[["或"]]"就仍然得用"\["或"\]"来避免歧义。当然,这种情况是极少会发生的。
  关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是C语言的数组,只能用正整数来作索引;在Lua中,你可以用任意类型来作数组的索引,除了nil。同样,在C语言中,数组的内容只允许一种类型;在Lua中,你也可以用任意类型的值来作数组的内容,除了nil。
 Table的定义很简单,它的主要特征是用"{"和"}"来括起一系列数据元素的。
{} -- 定义一个空表
  T1[1]=10
-- 然后我们就可以象C语言一样来使用它了。
  T1["John"]={Age=27,
Gender="Male"}
F. Function
  函数,在Lua中,函数的定义也很简单。典型的定义如下:
  function
add(a,b) -- add 是函数名字,a和b是参数名字
  return
a+b -- return 用来返回函数的运行结果
  请注意,return语言一定要写在end之前。假如你非要在中间放上一句return,那么请写成:do return end。
历史上的今天:
引用地址:
flab:xingxing:fxfsmile:fxfsmile:fxfsmile:fxfsmile::lan:lan:fxzeng:
访问统计:}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信