推 ericinttu:請教一下是哪邊的老師? 09/05 16:17
推 purpose:Windows 按照預設值,每次都會把執行檔載入到同個位址, 09/05 16:18
→ purpose:假設 4000 好了,而區域變數 x 通常位址固定在某個相對 09/05 16:20
→ purpose:距離,比如固定隔 4 位元組,所以位址不變是有可能的 09/05 16:21
→ purpose:當然你必須每次都把 int x 放在第一個函數 main 裡,才行 09/05 16:22
推 purpose:你們老師東西只教一半,虛擬位址、物理位址、stack frame 09/05 16:25
→ purpose:這些如果沒先講過,那他扯這些,完全只會誤導別人而已 09/05 16:26
推 ericinttu:改問你們老師教的是什麼科目? 09/05 16:28
嗯...大概知道答案了,感謝大家~
我只是想找答案而已,至於老師我不想多說= ="
根據老師自己的說法也是非本科系啦,但據他本人言寫了不下10年的code
因為是職訓的課程,時間很短,教的東西很雜
所以我猜他大概也不想講的很細吧...
只是有時候寫程式的邏輯連我都覺得怪怪的就是了........
推 sand1050:剛用VC測 變數記憶體位置每次都不一樣 09/05 17:00
推 littleshan:現在的OS都有address space layout randomization 09/05 17:07
→ littleshan:所以同一套說法現在已經不管用了 09/05 17:09
噓 james732:這種事情研究練習玩玩就好,別在實務上使用啊… 09/05 17:10
→ james732:糟糕我不小心按到噓 09/05 17:10
推 ericinttu:幫好人推回來 09/05 17:11
推 purpose:感謝補 li 大補充。剛用 cl aslr.c 編譯。執行檔在 Win7 09/05 17:27
→ purpose:位址會變,在 XP 跑不會。應該是 VISTA 後才支援。 09/05 17:27
→ purpose:cl aslr.c /link /DYNAMICBASE:NO 這樣編譯,就能關掉選項 09/05 17:28
推 B9: 看過十年經驗的程式設計師寫出大一大二等級的程式 09/05 19:10
推 cobrasgo:哇靠這是哪的老師,害人啊… 09/05 20:20
→ angleevil:<--大二程度 09/05 20:48
→ purincess:樓上是十年經驗設計師(_m_) 09/05 20:56
→ angleevil:只是五年的設計師...而且想轉跑道了! 寫不出什麼了 09/05 21:04
推 Serge45:我上司號稱寫五年C++,連刪除物件會呼叫dtor都會忘記 09/05 21:23
→ angleevil:<--不會c++ 09/05 21:49
推 ericinttu:<--只會++c 09/05 21:56
→ b9307025:複製回程式裡那行要看東西怎不是用%d 那是indirect不是嗎 09/05 22:06
推 james732:過了好久,補個推XD 09/05 22:21
推 changyuheng:推 b9307025,我也覺得是 %x 09/05 22:44
抱歉,是我打錯了 是%d沒錯~"~
※ 編輯: NullLife 來自: 123.193.204.107 (09/05 22:48)
推 ppc:這種課不上也罷... 09/05 23:27
推 EdisonX:我突然想起某個面試題... 09/05 23:32
→ TsinTa:感覺這老師只是在賣弄技巧,而且技巧也..... 09/05 23:39
推 flydragon198:我也寫了十年的程式呀,只不過是寫一年,重複十次而已 09/06 01:20
推 xvid:ASLR? 09/06 01:40
→ yauhh:事實擺明了,在Linux就不是這樣子,卻硬要以自己的認知講故事 09/06 01:44
→ yauhh:看這個比較營養 09/06 01:57
→ legnaleurc:... 這太超過,無法說明原理的東西不如別教 :( 09/06 05:25
推 damody:還好吧?師父告訴你有這個東西,之後把它學好就是學生的 09/06 10:48
→ damody:責任了,像酒劍仙也沒有教李消遙教到學會劍神才離開 09/06 10:48
→ damody:他只有教御劍術耶,根本不能打後面的王呀,會不會太超過? 09/06 10:50
推 UNARYvvv:to 二樓: 區域變數的位址不會固定相對於執行檔載入位址 09/06 11:18
→ UNARYvvv:應該說配在 stack 上的和 image base 無關, 那種有相對關 09/06 11:27
→ UNARYvvv:係的是 static variable 09/06 11:28
推 purpose:我的意思是 int main 的第一個區域變數 x 是會固定 09/06 12:21
→ purpose:call stack 一直到 main 每次執行都不會改變,再加上 ASLR 09/06 12:33
→ purpose:不開啟的情況下,每次的 ebp 值都會一樣,所以 &x 這個位 09/06 12:34
→ purpose:址,在這種情況下,跟 image base 是有固定相對距離的 09/06 12:35
推 UNARYvvv:這在保證每次執行檔載入位址固定、ESP 起始位址固定是成 09/06 13:42
→ UNARYvvv:立沒錯,但就連限定 Windows 平台時都還是要系統版本以及 09/06 13:44
→ UNARYvvv:編譯器設定配合才能滿足這個前提,我是傾向不這樣假設啦 09/06 13:44
推 dirkc:推樓上二位的討論 09/06 16:52
→ adxis:借問一下 VC 的 /Zi 是不是也有影響? 09/07 21:23
推 purpose:應該不會吧.../Zi 不是只牽涉 *.pdb 嗎?純猜測 09/07 21:26
→ purpose:為什麼你會覺得有關 09/07 21:26
→ adxis:印象中會影響指令的順序 @@ 09/08 00:05