精華區beta Programming 關於我們 聯絡資訊
※ 引述《UNARY.bbs@bbs.cse.ttu.edu.tw (Rootkit Researcher)》之銘言: > ※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言: > > 不需要的吧. > > 如果b的值會改變的話, 你應該用&b (例如"scanf("%d", &b);") > > 不是這樣的話, 直接把數值傳過去就可以了. > 其實他想問的只是.. > 難道編譯器已經聰明到: > 原本明明要 push「字串 "%d"」和「整數 10」兩個參數 > 最後結果會只有一個「字串 "10" 」嗎? > 這樣而已 > 所以先前您回他 > 關於 library/package/DLL/calling convension 這些部分 > 也難怪他總是得不到他所想知道的重點囉.. 噢... 我倒忘了自己把真正function call的部份strip去了... :P 00401028 |. 68 D8604000 PUSH test.004060D8 ; ASCII "%d" 0040102D |. E8 09000000 CALL test.0040103B 在push 10後是有再push "%d"的指標啦, 不過這裡有一點有趣的地方, 就是"%d"這字串的位置不在data segment(00408000-00409FFF) 也不在code segment(00401000-00405FFF),卻在.rdata(00406000-00407FFF)裡, 真想不到. -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: ip-84-126-134-202.rev.dyxnet.com