反彙編 字串的3種表達方式

2022-03-13 22:48:05 字數 1475 閱讀 5063

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 ...