再來就是迴圈的輸出了,GDB是跳到+42的位址後做的事情是將RBP-0x10放入RAX內,IDA是跳到loc_1004010AB將RBP-10h放入RAX內,是...
如何比較到輸出介紹完了之後,現在就來計算迴圈次數到達後的程式狀態,我們從RBP-0x4等於4的時候開始。 這邊IDA比較多資料,所以我們慢慢來看,可以看到右下角...
我們將六個Helloworld!順利的輸出完成了,接下來就是程式要進行結束時的動作了,我們來看最後的程式碼。 可以發現GDB明顯的比較少,在MOV後只做了lea...
接下來要做的是Function call在Stack當中會有怎樣的變化,我們一樣寫一支小程式。 在使用GCC時一樣會關閉防護,我們直接來看GDB和IDA逆向出來...
在這支程式比較會有疑問的地方應該是puts和printf的前置作業差別,puts只需要有個字串就可以輸出了,而printf需要字串和我們在printf Func...
現在我們看回原本的程式,現在準備要Call A這個Function了,要看在Call function時,Stack上的狀態。先看一下呼叫前的狀態,GDB的St...
上次講完要Call一個Function時Stack會做的變化,重點就在於會先存Return回來的Address以及Old RBP,接下來我們讓程式跑到Funct...
最後我們來看一整支程式結束時的樣子,GDB是寫leave ret,意思其實與IDA的ADD RSP,xxhPOP RBPReturn一樣,只是並非使用ADD,而...
Ubuntu的GDB講完了,我們這次來看Cygwin到IDA結束的樣子。可以看到第一個是將EAX設為0,這個是之前就出現過的,讓系統知道這個程式並沒有出現錯誤,...
接下來的Stack buffer overflow都會利用Ubuntu環境下GCC所產生的程式來實作,這邊寫一個小程式,基本上就是個簡單的輸入輸出然後就結束的一...