char str[6] = ;
char str = "abcdef";
char *str = "abcdef";
1、char str[6] = ;
,需要手動在結尾添'\0,反彙編如下
可以發現進行位址處理的時候都是通過ebp來間接賦值的,不需要去依賴任何的東西,只需要有ebp暫存器作為參照物!在shellcode中利用也起到一部分的作用!
6: char str[6] = ;
00401038 mov byte ptr [ebp-8],61h
0040103c mov byte ptr [ebp-7],62h
00401040 mov byte ptr [ebp-6],63h
00401044 mov byte ptr [ebp-5],64h
00401048 mov byte ptr [ebp-4],65h
0040104c mov byte ptr [ebp-3],66h
7: return 0;
00401050 xor eax,eax
8: }
2、char str = "abcdef";
,編譯器會自動幫忙結尾添'\0',反彙編如下
可以明顯發現與上面的寫法的區別,abcdef
是儲存在記憶體位址中的!取值的時候是把本身的位址作為參照物!
6: char str = "abcdef";
00401038 mov eax,[string "abcdef" (00422fa4)]
0040103d mov dword ptr [ebp-8],eax
00401040 mov cx,word ptr [string "abcdef"+4 (00422fa8)]
00401047 mov word ptr [ebp-4],cx
0040104b mov dl,byte ptr [string "abcdef"+6 (00422faa)]
00401051 mov byte ptr [ebp-2],dl
7: return 0;
00401050 xor eax,eax
}
3、char *str = "abcdef";
,反彙編如下
跟上面的差不多,都需要自身位址作為支撐,不同的地方是這個是一步到位,會直接格式化字串然後儲存到乙個位址中!
5: int main()
「很簡單」的十種表達方式
1 it s really 很簡單。2 it s a piece of cake.小事一樁。3 it s as easy as pie.真是易如反掌。4 it s no big deal.沒什麼大不了的。5 it s a no brainer.這很簡單不用動什麼腦筋的。6 i can do it w...
Python 字串格式化輸出的3種方式
1.print 我叫 s,身高 scm name,height 傳入的值為元組,依次填充 s 佔位符 str d 十進位制 整數 x 十六進製制 f 浮點型 指定長度 5d 右對齊,不足左邊補空格 5d 代表左對齊,不足右邊預設補空格 05d 右對齊,不足左邊補0 浮點數 f 預設是輸出6位有效資料...
Python字串拼接的五種方式
第一種 通過加號 的形式 print 第一種方式通過加號形式連線 love python n 第二種 通過逗號 的形式 print 第二種方式通過逗號形式連線 love python n 第三種 直接連線 中間有無空格均可 print 第三種方式通過直接連線形式連線 一 love python n ...