You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LuaJIT 2.1字节码含无效操作码,反编译失败求助

LuaJIT 2.1 字节码反编译失败解决求助

问题详情

  • 目标字节码基于LuaJIT 2.1版本
  • 使用指定的LuaJIT反编译器反编译时触发错误,经排查是字节码中包含不存在的opcode,导致反编译流程中断
  • 持有待反编译的脚本、字节码文件,使用的反编译器为znixian维护的LuaJIT反编译工具
  • 因无电脑环境,无法测试通过挂钩提取无保护脚本的方案,且目标脚本带有未知反挂钩机制

反编译时抛出的错误栈追踪

第一条错误

Traceback (most recent call last): 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 296, in <module> 
    retval = main_obj.main() 
             ^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 207, in main 
    self.decompile(self.options.file_name) 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 248, in decompile 
    self.ast = ljd.ast.builder.build(header, prototype) 
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 28, in build 
    return _build_function_definition(prototype, header) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 50, in _build_function_definition 
    node.statements.contents = _build_function_blocks(state, instructions) 
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 97, in _build_function_blocks 
    statement, line_marked_elements = _build_statement(state, addr, instruction) 
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 447, in _build_statement 
    return _build_var_assignment(state, addr, instruction) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 434, in decorated 
    assn = func(*args, **kwargs) 
           ^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 527, in _build_var_assignment 
    expression = _build_function(state, instruction.CD) 
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 851, in _build_function 
    return _build_function_definition(prototype, state.header) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 50, in _build_function_definition 
    node.statements.contents = _build_function_blocks(state, instructions) 
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 72, in _build_function_blocks 
    _establish_warps(state, instructions) 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 242, in _establish_warps 
    block.warp, shift = _build_warp(state, block.last_address, warp) 
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\ast\builder.py", line 255, in _build_warp 
    last = instructions[-1] 
           ~~~~~~~~~~~~^^^^ 
IndexError: list index out of range

第二条错误

Traceback (most recent call last): 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 296, in <module> 
    retval = main_obj.main() 
             ^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 207, in main 
    self.decompile(self.options.file_name) 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\main.py", line 241, in decompile 
    header, prototype = ljd.rawdump.parser.parse(file_in, on_parse_header) 
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\parser.py", line 36, in parse 
    r = r and _read_prototypes(parser, parser.prototypes) 
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\parser.py", line 75, in _read_prototypes 
    if not ljd.rawdump.prototype.read(state, prototype): 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\prototype.py", line 49, in read 
    r = r and _read_constants(parser, prototype) 
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\prototype.py", line 137, in _read_constants 
    return ljd.rawdump.constants.read(parser, prototype.constants) 
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\constants.py", line 29, in read 
    r = r and _read_complex_constants(parser, constants.complex_constants) 
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\1\Desktop\Реверсинг\test\ljd\ljd\rawdump\constants.py", line 74, in _read_complex_constants 
    complex_constants.append(parser.prototypes.pop()) 
                             ^^^^^^^^^^^^^^^^^^^^^^^ 
IndexError: pop from empty list

寻求帮助

现寻求解决该反编译失败问题的可行方案。


内容的提问来源于stack exchange,提问作者Mazahaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:45:18