metaworm/luac-parser-rs

提供任意指令编码指定方式

Closed this issue · 1 comments

手头有一个被修改了指令编码、luac文件格式、opcode的5.3 luac样本,目前已经改出来了能反汇编的luadec,如下是修改过的指令编码:

/*
** size and position of opcode arguments.
*/
#define SIZE_C		8
#define SIZE_B		8
#define SIZE_Bx		(SIZE_C + SIZE_B)
#define SIZE_A		8
#define SIZE_Ax		(SIZE_C + SIZE_B + SIZE_A)

#define SIZE_OP		8

#define POS_OP		24
#define POS_A		0
#define POS_C		16
#define POS_B		8
#define POS_Bx		8
#define POS_Ax		POS_A

大致就是opcode C B A各占从高到低一字节。目前这个parser还不能给反编译器传递修改过指令编码的bytecode信息。可能需要添加一下这样的接口。

仔细了解示例代码发现其实所谓的通过parser支持修改的opcode是一种类似二进制翻译的方案,所以我通过修改instruction u32并对对应指令二进制翻译获得了成功,目前发现此反编译服务给的timeout不够用,另开issue讨论