我正在尝试对Lua5.1字节码文件进行二进制修补。我不知道如何将EQ操作的十六进制表示形式更改为十六进制中的not EQ。
发布于 2022-03-10 15:11:47
没有NEQ操作码。无论比较是EQ还是NEQ,都由EQ操作码中的A字段控制。见https://www.lua.org/source/5.1/lopcodes.h.html#OP_EQ。
EQ 1 B C表示if B == C,EQ 0 B C表示if B ~= C。
在生成的二进制文件上使用luac -l和xxd来尝试一个简单的示例。
EQ操作码中的位布局是B C A OP。见https://www.lua.org/source/5.1/lopcodes.h.html#POS_OP。
因此,EQ比较中的A OP给出0x57字节,A OP在NEQ比较中给出0x17字节。
因此,您需要将字节从0x57更改为0x17。你只需要知道哪个字节:-)
https://stackoverflow.com/questions/71425460
复制相似问题