cocos2dx luajit_如何还原文件打开方式

cocos2dx luajit_如何还原文件打开方式最近对一款游戏的lua脚本提取,发现提取出来的脚本都是LJ格式的文件。如图:image在网上找了好几个工具都没什么用,最后在github找到了luajit-decomp-master,还原出来的伪代码基本能看懂,但是还是有残缺。如果不明确的逻辑和数据还是要结合ida动态调试。可以看看效果原lua源码functioniter(a,i)i=i+1…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近对一款游戏的lua脚本提取,发现提取出来的脚本都是LJ格式的文件。如图:

4121383-4e66daf58910774e

image

 

在网上找了好几个工具都没什么用,最后在github找到了luajit-decomp-master,还原出来的伪代码基本能看懂,但是还是有残缺。如果不明确的逻辑和数据还是要结合ida动态调试。

可以看看效果原lua源码

function iter (a, i)
 i = i + 1
  local v = a[i]
    if v then
      return i, v
    end
end
function ipairs (a)
    return iter, a, 0
end

经过luajit编译后的文件用16进制查看。

4121383-ef61d9f0beb981a9

image

 

然后经过我们的luajit-decomp 解析后的结果

function randomFunction iter (INPUT_VAR_0_,INPUT_VAR_1_)
var_0_1 = INPUT_VAR_1_ +  1 --var_0_1 NUMBER-NUMBER
if unknown0 then
--jump to 0008 (if previous if statement is false) --0008 JMP-JMP
var_0_3 = var_0_1
var_0_4 = unknown0
return var_0_3, var_0_4
end
return
end
function randomFunction ipairs (INPUT_VAR_0_)
var_1_2 = INPUT_VAR_0_
var_1_3 = 0 --var_1_3 NUMBER-NUMBER
return iter, var_1_2, var_1_3
end
function someFunc2()
local randomFunction0 = function() end -- starts at  test.lua:0
iter = randomFunction0
local randomFunction1 = function() end -- starts at  test.lua:0
ipairs = randomFunction1
return
end

luajit-decomp的使用方法:
1.需要LuaJIT-2.1.0-beta2编译成功,编译的资料很多可以查查,我是直接用目录下的msvcbuild.bat编译出来的。
2.把LuaJIT-2.1.0-beta2目录下的jit文件,luajit.exe,lua51.dll,3个文件复制到luajit-decomp-master目录下。
3.把要解析的目标文件改为test,例如:test.lua。也可以修改decoder_new.au3里面的内容自定义文件名。
4.运行目录下的decoder_new.exe,产生一个分析结果文件out.lua可以直接打开查看。

luajit-decomp目录下有decoder.exe,decoder_new.exe两个可执行文件,我觉得decoder_new.exe解析出来的结果更接近源码。
下载:
luajit-decomp:https://github.com/bobsayshilol/luajit-decomp
luajit:http://luajit.org/download/LuaJIT-2.1.0-beta2.zip

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188239.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • H3C交换机、路由器常用配置命令大全

    H3C交换机、路由器常用配置命令大全H3C交换机配置命令大全1、system-view进入系统视图模式2、sysname为设备命名3、displaycurrent-configuration当前配置情况4、language-modeChinese|English中英文切换5、interfaceEthernet1/0/1进入以太网端口视图6、portlink-ty

    2022年6月20日
    35
  • 哈希算法是对称算法还是非对称算法_对称加密和非对称加密原理

    哈希算法是对称算法还是非对称算法_对称加密和非对称加密原理哈希算法和·Hmac算法

    2025年8月9日
    2
  • 多重共线性检验-方差膨胀系数(VIF)

    多重共线性检验-方差膨胀系数(VIF)  方差膨胀系数(varianceinflationfactor,VIF)是衡量多元线性回归模型中复(多重)共线性严重程度的一种度量。它表示回归系数估计量的方差与假设自变量间不线性相关时方差相比的比值。  多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。若存在多重共线性,计算自变量的偏回归系数时矩阵不可逆。其表现主要有:整个模型的方差分析…

    2022年6月11日
    147
  • Java中,为什么byte类型的取值范围为-128~127?

    Java中,为什么byte类型的取值范围为-128~127?在学习Java基础语法的时候,初学者的我们可能都会有这么一个疑问为什么byte类型的取值范围为什么是[-128,127]而不是[-127,127]。01111111表示最大的数值:127,因为第一位是符号位,所以11111111应该是最小的数值:-127,不是这样才对?在解释这个问题之前我们需要了解几个概念:机器数、真值、原码、反码、补码机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器

    2022年6月15日
    25
  • layDate时间控件

    layDate时间控件给大家介绍一款超好用的控件layDate控件,layui.laydate下载类库之后直接使用,在这里我先展示效果图:使用起来也是很简单,下载好类库,把类库粘贴到你的项目中类库提取码:v74d代码:<!DOCTYPEhtml><html><head><metacharset=”utf-8″><title>使用layDate独立版</title></head><body>

    2022年5月10日
    39
  • leetcode链表问题_反转一个单链表

    leetcode链表问题_反转一个单链表给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5] 提示:链表中节点数目为 n1 <= n <= 500-500

    2022年8月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号