來自buflab of CSAPP的問題。我被要求輸入一段足以破壞堆棧的漏洞代碼。在階段2中,我需要首先更改名爲global_value的全局變量的值,然後調用名爲bang的函數。然而,只有當我將爆炸地址放入堆棧然後返回時纔有效。我可以跳出當前正在執行的功能嗎?
#codes before set the value of global_value
movl $0x12345678,%eax /* 0x12345678 is the address of bang */
push %eax
ret
如果我使用一個直接跳轉像
#codes before set the value of global_value
jmp 0x12345678
然後我得到完全失去了在地方,比如用gdb 0x5abcdefg。任何人都可以幫忙這與模式尋址有什麼關係?
' use longjmp() ' –
2013-03-24 07:02:12