C++ 从凯撒密码执行 shellcode 不起作用

C++ executing a shellcode from caesar cipher does not work

在我的代码示例中,我对 shellcode 进行了硬编码,并且执行正常:

请删除

您的 Caesar 解码 shellcode 与您的硬编码 shellcode 不匹配,这就是您得到不同输出的原因。

让我们以第一个字符为例,但这适用于整个数据:

您的 Caesar 编码字符串以 ASCII _ 字符开头,其十六进制值为 0x5F。当减 3 时,它变为十六进制值 0x5C,即 ASCII \ 字符。

但是,您的硬编码 shellcode 以 ASCII H 字符开头,其十六进制值为 0x48。无论您将该值左移(减少)3,还是右移(增加)3,结果都不会接近 0x5C0x5F。左移,0x48 将是 0x45 (E)。右移,它将是 0x4B (K).

这意味着您的 Caesar 编码字符串是您想要的 shellcode 开头的错误编码。