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,结果都不会接近 0x5C
或 0x5F
。左移,0x48
将是 0x45
(E
)。右移,它将是 0x4B
(K
).
这意味着您的 Caesar 编码字符串是您想要的 shellcode 开头的错误编码。
在我的代码示例中,我对 shellcode 进行了硬编码,并且执行正常:
请删除
您的 Caesar 解码 shellcode 与您的硬编码 shellcode 不匹配,这就是您得到不同输出的原因。
让我们以第一个字符为例,但这适用于整个数据:
您的 Caesar 编码字符串以 ASCII _
字符开头,其十六进制值为 0x5F
。当减 3 时,它变为十六进制值 0x5C
,即 ASCII \
字符。
但是,您的硬编码 shellcode 以 ASCII H
字符开头,其十六进制值为 0x48
。无论您将该值左移(减少)3,还是右移(增加)3,结果都不会接近 0x5C
或 0x5F
。左移,0x48
将是 0x45
(E
)。右移,它将是 0x4B
(K
).
这意味着您的 Caesar 编码字符串是您想要的 shellcode 开头的错误编码。