我有一個將 NOP 字符寫入標準輸出的 C 程式:
#include <stdio.h>
int main(char *argc, char *argv[]) {
fwrite("\x90", 1, sizeof(char), stdout);
return 0;
}
我還有另一個接受輸入的程式,我正在 gdb 中運行它(所以我可以查看堆疊)。
運行第一個程式后,我從標準輸出復制 NOP 并將其粘貼到 GDB 作為第二個程式的輸入。
查看堆疊時,我總是得到這個值:
0x00bdbfef
什么時候應該
0x00000090
為什么是這樣?python似乎也出現了這個問題,但我無法確定原因。
uj5u.com熱心網友回復:
utf-8 序列ef bf bd(記住某些架構中較大資料型別的位元組反轉)是替換字符代碼點,即內部帶有問號的菱形。
您的終端很可能無法呈現90,因此它會為您提供。而且,當您在其他地方標記和復制該字符時,就是這樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525461.html
標籤:C数据库打印无操作
上一篇:如何將&arr傳遞給c中的函式
