rosieblue
article thumbnail
728x90

mov, jmp ์ด๋Ÿฐ ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋Š” ๋‹ค ์•„๋Š” ์ƒํƒœ๋กœ ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค. ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„๋„ ํฌ์ŠคํŒ…ํ•˜๊ฒ ์œผ๋‚˜ ํ™•์‹คํ•˜์ง€๋Š” ์•Š๋‹ค.

์Šคํƒ ๊ธฐ๋ณธ ๋ช…๋ น์–ด push, pop

push val

์Šคํƒ ์ตœ์ƒ๋‹จ์— val์„ ๋„ฃ์Œ

sub rsp 8 ;์Šคํƒ ํฌ์ธํ„ฐ๋ฅผ 8๋งŒํผ ์ค„์ž„ (์ฆ‰ ์Šคํƒ ํฌ๊ธฐ๋ฅผ ํ•œ์นธ ๋Š˜๋ฆผ)
mov [rsp] val ;rsp๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— val ๋„ฃ์Œ

pop reg

์Šคํƒ ๋งจ ์œ„๊ฐ’์„ ๊บผ๋‚ธํ›„ reg์—(addr์•„๋‹˜!!) ๋Œ€์ž…

add rsp 8 ;์Šคํƒ์„ ํ•œ์นธ๋งŒํผ ์ค„์ž„
mov reg [rsp-8] ;์›๋ž˜ rsp๊ฐ€ ์žˆ๋˜ ๊ณณ์˜ ๋ฐ์ดํ„ฐ๋ฅผ reg์— ๋Œ€์ž…

 


ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ทœ์•ฝ์— ๋‚˜์˜ค๋Š” ๋ช…๋ น์–ด๋“ค

 

call addr

addr์— ์žˆ๋Š” ํ”„๋กœ์‹œ์ €(ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ) ํ˜ธ์ถœ (์ฐธ๊ณ ๋กœ call ์ „์— SYSV์—์„œ๋Š” ์ธ์ž๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ „๋‹ฌํ•จ)

push ret_addr ;๋‚˜์ค‘์— ๋Œ์•„๊ฐ€์•ผํ•  ์ฃผ์†Œ ์Šคํƒ์— ์ €์žฅ (ํ˜„์žฌ rip ๋ฐ”๋กœ ๋’ค!)
jmp addr ;addr๋กœ ์ด๋™

 

(์ฐธ๊ณ ) call ์ดํ›„ ๊ณผ์ •

push rbp ;caller rbp๋ฅผ ์Šคํƒ์— ์ €์žฅ
mov rbp, rsp ;rbp๋ฅผ ์Šคํƒ ๋งจ์œ„๋กœ ์˜ฎ๊น€ (์ƒˆ๋กœ์šด ํ•จ์ˆ˜์˜ ์Šคํƒ์„ ํ• ๋‹นํ•˜๋ ค๊ณ !)

 

ํ•จ์ˆ˜ ์—ํ•„๋กœ๊ทธ ๊ณผ์ •

leave

์Šคํƒ ํ”„๋ ˆ์ž„ ์ •๋ฆฌ

mov rsp, rbp ;ํ˜„์žฌ rbp๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ rsp์œ„์น˜ ๋ณ€๊ฒฝ
pop rbp ;ํ˜„์žฌ ์Šคํƒ์—๋Š” ๊ธฐ์กด ์Šคํƒํ”„๋ ˆ์ž„์˜ rbp๊ฐ€ ๋“ค์–ด์žˆ์Œ. ๊ฑฐ๊ธฐ๋กœ rbp ์œ„์น˜ ๋ฐ”๊ฟˆ

ret

๊ธฐ์กด ์œ„์น˜๋กœ ์ด๋™

pop rip ;๊ธฐ์กด callee ์Šคํƒ ์ตœ์ƒ๋‹จ์—๋Š” ret_addr๊ฐ€ ๋“ค์–ด ์žˆ์—ˆ์Œ ๊ฑฐ๊ธฐ๋กœ rip ์ด๋™

 

ํ•จ์ˆ˜(ํ”„๋กœ์‹œ์ €) ์‹คํ–‰์‹œ ์Šคํƒ์˜ ์ƒํƒœ๋ฅผ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

profile

rosieblue

@Rosieblue

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!