使用#define
:
#include <stdio.h>
#define CONSTANT "Constant"
int main(void)
{
char buf[32];
strcpy(buf, CONSTANT);
return 0;
}
使用全局const
:
#include <stdio.h>
const char *constant = "Constant";
int main(void)
{
char buf[32];
strcpy(buf, constant);
return 0;
}
现在假设有人设法对生成的二进制文件进行十六进制编辑。他/她可以编辑全局常量以导致缓冲区溢出,从而执行任意代码。
我的问题是,这种十六进制编辑可以用#define
s 吗?
我自己没有尝试过十六进制编辑,因为我一点也不知道如何破译这些十六进制值!我也找不到任何可靠的教程。