jkdenuku/lua-deobfuscator-server
GitHub: jkdenuku/lua-deobfuscator-server
一个专门解密基于时间XOR加密的Lua混淆代码的工具,提供Python脚本和服务器API两种调用方式。
Stars: 0 | Forks: 0
# Lua XOR 基于时间的反混淆工具
此反混淆工具用于解密使用基于时间的 XOR 加密的 Lua 混淆代码。
## 📋 支持的混淆模式
```
local z={4,23,9,28,31,64,79,12,29,7,0,13,13,10}
local k=_5() -- 時間ベースのキー生成
local o={}
for i=1,#z do
o[i]=_1(_4(z[i],k)) -- XOR復号化
end
```
## 🚀 使用方法
### 方法 1: Python 脚本 (推荐)
```
# ファイルから読み込み
python3 lua_deobfuscator.py your_obfuscated_file.lua
# スクリプトを編集してコードを直接貼り付け
python3 lua_deobfuscator.py
```
### 方法 2: 服务器设置 (用于 lua-deobfuscator-server)
1. 将 `server.json` 复制到您服务器的根目录
2. 启动服务器
3. 上传混淆后的 Lua 文件
```
# サーバー起動
node server.js
# API 端点
POST http://localhost:3000/deobfuscate
Content-Type: application/json
{
"code": "return(function(...)...end)(...)"
}
```
## 🔧 工作原理
1. **提取加密数据**: 从 `local z={...}` 获取加密的字节数组
2. **尝试所有密钥**: 使用 0-255 所有可能的密钥尝试 XOR 解密
3. **评分**: 根据 Lua 关键字出现频率和可打印字符比例计算分数
4. **选择最佳结果**: 返回得分最高的结果
## 📊 XOR 解密算法
```
function xorDecrypt(byte, key) {
let result = 0;
for (let i = 0; i < 8; i++) {
const a = (byte >> i) & 1;
const b = (key >> i) & 1;
if (a !== b) result |= (1 << i);
}
return result;
}
```
## ⚠️ 注意事项
- 基于时间的密钥在运行时动态生成,因此无法直接得知原始密钥
- 采用尝试所有可能的密钥 (0-255) 以找到最佳匹配的方式
- 如果加密的 payload 还经过了其他混淆,可能需要额外处理
## 🛠️ 故障排除
### 出现乱码时
原始代码中的 `{4,23,9,28,31,64,79,12,29,7,0,13,13,10}` 可能并非实际的 Lua 代码,而是另一层混淆的数据。
解决方案:
1. 检查实际运行时生成的字符串
2. 尝试对该字符串进行进一步解密
3. 如果是多阶段混淆,则需要逐步解密
### 分数低 / 未找到结果
- 检查加密数据是否正确提取
- 可能与其他混淆技术结合使用
- 使用 verbose 模式查看详细日志
## 📝 示例
### 输入 (已混淆)
```
local z={4,23,9,28,31,64,79,12,29,7,0,13,13,10}
local k=_5()
local o={}
for i=1,#z do
o[i]=_1(_4(z[i],k))
end
return _2(o)
```
### 输出
```
🔑 Key: 97
📈 Score: 150
💻 Decrypted code:
print('test')
```
## 🔗 链接
- 原始仓库: https://github.com/jkdenuku/lua-deobfuscator-server
- 问题反馈: GitHub 的 Issues 部分
## 📄 许可证
本工具基于 MIT 许可证发布。
**创建日期**: 2025年2月15日
**支持环境**: Node.js 14+, Python 3.6+
标签:DAST, GNU通用公共许可证, Lua, MITM代理, Node.js, Python, rizin, XOR解密, 云安全监控, 云资产清单, 去混淆工具, 后端开发, 后端开发, 密码学, 恶意软件分析, 手动系统调用, 无后门, 时间基加密, 编程开发, 网络测绘, 脚本安全, 逆向工具, 逆向工程, 静态分析