我正在处理缓冲区溢出攻击,我有这个代码将0xXX
输入转换为等效的1字节ASCII字符。
int main(int argc,char **argv) {
char buffer[1024];
while (fgets(buffer,sizeof(buffer),stdin)) {
char * rest=buffer;
unsigned char hexVal;
while (rest[0]!='\0') {
if (1==sscanf(rest,"0x%2hhx",&hexVal)) {
printf("%c",hexVal);
rest+=4;
} else {
printf("%c",rest[0]);
rest++;
}
}
}
return 0;
}
当我给它输入0x180x850x040x08
(这是08048518
的小端版本)时,它会变成地址bdbfef18
。
我不确定为什么地址被错误解释。