我正在尝试编写解码器存根,但遇到了0xFF作为坏字符的限制。我正在使用该jmp-call-pop方法将我编码的 shellcode 的地址放入一个寄存器中。这是相关的片段:
401012: e8 eb ff ff ff call 0x401002
Run Code Online (Sandbox Code Playgroud)
似乎call总是0xFF以字节为单位使用。是否有另一条指令在执行时会压入rip堆栈并跳转到另一段代码?我试过手动将地址推送到堆栈上,但这会导致空字节,因为我的地址有 3 个字节长并且需要填充。
我的机器代码中不允许的字节是: