lua脚本编辑
1. lua编写脚本在wireshark中实现,现有偏移是offset按位偏移,在某些字段需按bit解析,应该怎么做
比如说第一个bit代表的标志为flag1,后7个bit代表的标志为flag2。那么flag1和flag2作为要加入tree的field,可以表示为:
flag1=ProtoField.uint8("your_protol_flag1", "flag1", base.DEC, null, 0x80)
flag2=ProtoField.uint8("your_protol_flag2", "flag2", base.DEC, null, 0x7F)
其中0x80,0x7F为按位操作的掩码,作用分别是取uint8的第一位和后七位。
然后将field加入子树中即可:
subtree:add(flag1, buffer(offset+2, 1))
subtree:add(flag2, buffer(offset+2, 1))
-------------------------------------------
wireshark官方API地址为:网页链接
2. 怎么用cheat engine里的lua脚本制作游戏修改器
对于固定内存地址的游戏,可以使用Cheat Engine软件来制作修改器。这个过程很简单,就是步骤有些多。
以修改雷电2为例,说明如何用ce制作修改器。也可以用其它修改内存地址的软件来查找游戏的内存地址,然后添加到ce中。这样可以简化制作过程。
工具/原料
Cheat Engine 5.61
金山游侠5
fpe2001
修改并添加地址
1运行游戏。切换窗口,打开ce。
点左上角的逗选择进程地,在逗进程列表地中选择游戏的名字,点逗打开地。
建议制作修改器用5.61版本的ce,这个版本的高级选项中有创建修改器的选项。
2选中逗hex地前面的选项,检测输入的值是十六进制的。对一些数值,需要选中它,才能搜索到。
在逗值地的输入框中输入3,点逗首次扫描地。
3切换到游戏,将生命数改变。
只有地址变化了,才能搜索具体的数值。游戏中的数值大部分都可以用具体的数值来搜索。
4切换到ce,在逗值地的输入框中输入改变后的数值,点逗再次扫描地。
通常搜索两次就可以找到唯一的地址。如果还有许多地址,回到游戏让数值再改变一次,再回到ce中进行再次扫描。所有的游戏修改器都是这样进行搜索。
5双击搜索到的地址,地址被放入锁定窗口中,选中逗锁定地,这个地址在游戏中就始终是这个数值。
在锁定地址上按鼠标右键,选择逗更改记录地→逗描述地,或是在地址的逗描述地位置双击左键。输入这个地址的说明。
6在地址上按右键,选择逗浏览相关内存区域地。打开逗内存浏览器地,在窗口下方就是该地址所在的内存数值,其它的内存数值也在这里。双击就可以编辑。可是修改后没有提示,不利于查看。
7对内存地址进行编辑,需要用到金山游侠和fpe2001。
这两个修改器,在对内存进行编辑后,对编辑过的地址用彩色标记。在进行内存对比时,很方便。这里就不介绍了,这两个软件使用方法比ce简单多了。有些游戏是需要使用不同修改器,才能搜索到地址。
8双击金山游侠中锁定地址中的逗自动锁定地,打开逗添加修改地窗口,将地址进行复制。
9回到ce。点逗手动添加地址地,在逗添加地址地窗口中的地址框中粘贴刚才复制的地址,输入描述说明,确定。
10在地址上按鼠标右键,在弹出的菜单中选择逗更改记录地→逗值地,输入数字,确定。这个地址的数值就改变了。
11选择逗更改记录地→逗类型地,选择新类型后确定,就更改了这个地址的长度。
如果需要更改的数值会很大,就要更改类型。2个字节代表00,4个字节代表0000。
12其它的地址也这样添加到ce中。
这样就避免了使用ce进行搜索的过程。只要是固定的内存地址,都可以通用。
需要的地址全部添加后,就可以制作修改器了。
13在制作之前,选择左上角的逗保存地图标,选择路径,点逗保存地。游戏的内存地址就被保存成文件了。
下次运行游戏就可以直接打开保存的地址,不需要再搜索地址。修改器制作出错后,也可以打开保存的地址,重新进行制作。
END
制作修改器
点左下角的逗高级选项地,打开逗高级选项地窗口。
制作修改器需要使用这里的功能。有些版本的ce中没有这个功能。
点击逗创建单独使用的修改器地图标,在弹出的窗口中选中逗创建新的修改器地和逗游戏/程序运行时,修改数据地,确定。
在逗修改器制作地窗口中,执行的结果会在预览窗口中显示。
选择逗更改图像地,选择一个图片,可以让逗预览地窗口中逗启动地下面显示图像。
选择逗更改图标地,选择一个图标文件,制作的修改器会显示这个图标。
输入标题,在修改器窗口标题栏上就会显示内容。
选择逗进程地,找到运行的游戏文件名,左键点击就选择了。不选择,修改器就不会知道要修改什么游戏。
点击下面的逗加入项目地,在逗修改器制作:添加记录地窗口中选择逗添加地。
在逗修改器制作:添加地址地窗口中选择逗设定数值并锁定/解锁地址地,输入数值。选中逗允许用户更改这个数值地,在修改器中就可以更改。
选中逗常规锁定地,在下面的窗口中选择一个地址,选择逗添加地。选择不正确时会有提示。
在弹出的逗修改器制作:添加记录地窗口中,在逗作用地输入框中输入说明,在逗热键地输入框中按一下设定的按键,不满意设置的热键点逗清除地,选择确定。
在右面的逗预览地窗口中就会出现添加的效果。
6其它的地址也是这样添加。全部添加后,选中逗防止修改地,制作的修改器就不允许用ce打开。
最后点击逗生成修改器地,选择路径,起一个名称,点逗保存地。会提示修改器已生成。
至此修改器制作完成。使用效果见简介图片。
选择左面窗口中已添加的地址,选择逗删除项目地可以去掉选中的地址。
3. lua脚本有没有自加自减运算符
到目前为止,没有相关运算符。5.2 以前标准库不提供按位操作函数,5.2 开始标准库 bit32 提供按位操作的函数。比如下面的代码只可以可以用在 5.2 及以后版本。
12
>print(bit32.bor(1,2))3
4. 如何调试lua脚本
调试lua现有的几种方案:
1)luaedit : 编辑断点和断点命中查看那些都让习惯用vs的人感到亲切,但是它只是在纯lua环境下的编辑器,也就是说和期望程序运行中能借用它来调试脚本可能性不大(至少我没有试验出来),能用上的需要给lua脚本做个main脚本函数,并提供一系列伪的c api(由lua实现的函数,只提供制定值的返回)。由luaedit启动脚本main函数进行调试
2)利用 lua debug 库中的 hook ,然后记录一张断点位置表,设置行模式的 hook ,每次进入 hook 都检查是否是断点处,若是就停下来等待交互调试。这个方法有效,但是很消耗 cpu 。因为每进入一个新的代码行,都需要回调一个函数。当这个函数本身又是用 lua 写的时候,效率更低。
3)利用lua脚本函数实现,在lua脚本中封装一个断点函数,这种方式结合debug库实现断点和栈信息,然后利用lua环境下的表对函数调用信息进行记录和打印,需要脚本使用者显式提供断点函数的调用。这个办法的优点自己可以组合出适合自己项目的断点调试方案。但缺点是相对繁琐,而且断点命中以后难以和现有方式融合
5. luac脚本怎么编辑打开制作
在cmd中执行就可以了。
假设luadec放在c:\lua下,想要看到c:\test\test.lua文件的源码,那么可以使用如下操作
1.打开CMD 命令行窗口。
2.在窗口中输入如下命令:
c:\lua\luadec.exe -d c:\test\test.lua >c:\test\test_bak.lu。
3.使用lua编辑器,打开c:\test\test_bak.lua 就已经看到源码了。