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

image

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

可以看看效果原lua源码

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

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

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

cocos2d-luajit文件还原相关推荐

  1. .dat文件还原数据库

    .dat文件还原数据库可能遇到的问题: 提示物理文件名错误,请使用WITH   MOVE选项来标示该文件的有效位置;    原因可能是备份文件原始路径跟你自己计算机的数据库路径不同,所以要用WITH  ...

  2. 文件还原工具Foremost

    文件还原工具Foremost 在数字取证中,通过对设备备份,可以获取磁盘镜像文件.通过分析镜像文件,可以获取磁盘存在的数据.但是很多重要数据往往已被删除.这个时候,就需要还原这些文件.Kali Lin ...

  3. .pyc文件还原.py文件_从镜像文件还原分区 (系统还原)

    DOS工具箱是为2000系统以上系统加上纯DOS启动支持的工具,方便没有光软驱时全中文操作界面,已经预装有GHOST8.2版,支持NTFS分区软件在DOS下以虚拟磁盘存在以免去NTFS文件系统不能为D ...

  4. .bak 服务器备份文件,如何从SQL Server Management Studio中的多个备份(bak)文件还原数据库...

    本文概述 在带有SSMS的SQL Server中, 还原数据库(至少对于小型数据库而言)非常容易.无论当前的原因是什么, 例如在生产环境中进行还原, 在本地环境中进行还原以检查数据库完整性等等, 你都 ...

  5. Oracle11使用现在数据库文件,oracle11g 重装操作系统后,如何利用原有oracle表空间文件还原数据库...

    oracle11g 重装操作系统后,如何利用原有oracle表空间文件还原数据库 最近由于系统重装,在还原dmp备份文件时,由于数据原因(用exp命令导出时表没有导出全部),导致系统不能正常运行.根据 ...

  6. Eclipse中使用GIT将文件还原至上一版本

    GIT将文件还原至上一版本: 选中文件--右击--Replace With--HEAD Revision:

  7. 计算机文件打开方式这么还原,dat文件还原默认打开方式如何设置?还原默认打开方式的详细步骤...

    随着电脑的使用率越来越高,我们有时候可能会遇到win10系统dat文件还原默认打开方式的问题,如果我们需要对win10系统dat文件还原默认打开方式进行设置时,要怎么处理呢?接下来小编就给大家带来wi ...

  8. mysql bak 还原数据库文件格式_Navicat操作SQL server 2008R2文件.bak文件还原

    项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...

  9. html文件bak,轻松解包MIUI小米备份bak文件 还原出明文数据

    轻松解包MIUI小米备份bak文件 还原出明文数据 1.将目标Bak备份数据拷贝到电脑端 小米MIUI手机备份后的文件会存放在手机存储下 /MIUI/backup/Allbackup/xxx 目录中( ...

  10. 将Texture Packer制作的.pvr.ccz和.plist文件还原为多个原图 -- 使用说明文档

    1.准备 1.安装 TexturePacker 2.安装python 3.安装Pillow-2.1.0.win-amd64-py2.7.exe 2.PVR转PNG.bat的使用 把 xx.plist和 ...

最新文章

  1. SpringBoot第十四篇:在springboot中用redis实现消息队列
  2. 如何将代码优雅的放在WORD文档中?
  3. 无法安装软件之解决其一 (windows installer服务篇)
  4. 苹果html抓包,苹果被开发者“抓包”违反了自己定的规则
  5. WP Rocket插件无需授权版本
  6. 排序算法之归并排序(JAVA)
  7. 程序员的黑科技_用代码回复博客
  8. 用SoapUI进行WebService接口测试
  9. [论文翻译] Active Learning by Feature Mixing
  10. java 找出调用的方法_如何找到用Java调用给定方法的所有方法?
  11. STC单片机 命名规则,最小系统 图示
  12. iOS 的TextView的常规用法
  13. MySQL报错113_连接 MySQL 报错'NoneType' object has no attribute '__getitem__'
  14. java实习计划_JAVA实习计划及指导书.pdf
  15. php 读取 日文文件名,PHP文件上传-处理阿拉伯文/中文/日文文件名
  16. kindle的xray怎么用_kindle的x-ray有什么用
  17. 台式计算机 如何组装,如何自行组装台式计算机?组装台式计算机主机的教程...
  18. 预算少怎么做ASO优化?
  19. Android addview—动态添加view
  20. Log4j史诗级漏洞,我们这些小公司能做些什么?

热门文章

  1. Java Stream流式编程
  2. 中国生态系统服务空间/食物生产、土壤保持、水源涵养、防风固沙、生物多样性、碳固定
  3. 触摸屏-人机界面页面切换应用教程
  4. 如何利用业余时间快乐的赚钱
  5. js中自定义对象、json对象、json字符串、普通js对象 --js学习那本书上的
  6. PhysX官方手册翻译(二)
  7. MySQL的MDL锁解惑
  8. todo谷粒商城三分布式组件-SpringCloud Alibaba与SpringCloud
  9. HDMI转 toMIPI DSI驱动板1080P 2K 4K TC358870 东芝IC LCD 3D打印机 VR 永星电子 Yongxing
  10. 北斗定位模块成就智慧物流