๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ์—์ฝ” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ

728x90

https://youtu.be/Z3QuFbsnqMc

์˜ค๋Š˜๋„ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ด…์‹œ๋‹ค!


$nano echo.s

๋‚˜๋…ธ๋ฅผ ์ด์šฉํ•ด ์–ด์…ˆ๋ธ”๋ฆฌ์–ด ์ž…์ถœ๋ ฅ์„ ๋‹ค๋ฃจ๋Š” ์—์ฝ”ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค.

 

section .text
        global _start

_start:
        xor rax, rax
        mov rbx, rax
        mov rcx, rax
        mov rdx, rax

        sub rsp, 64
        mov rdi, 0
        mov rsi, rsp
        mov rdx, 63

        syscall

        mov rax, 1
        mov rdi, 1
        mov rsi,rsp
        mov rdx, 63

        syscall

        mov rax, 60

        syscall

sub rsp, 64๋Š” ์ด์ „ ์‹œ๊ฐ„์— ํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ ์Šคํƒ ๊ณต๊ฐ„์„ 64๋งŒํผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ดˆ๋ฐ˜์— mov rbx, rax ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฒƒ์€ ๋‹ค rbx๋ฅผ rax๊ฐ’์œผ๋กœ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰ 0์œผ๋กœ ๋งŒ๋“ ๋‹ค.

rax์—๋Š” 0์ด ๋“ค์–ด๊ฐ€๋ฏ€๋กœ sys_read๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

rdi๋Š” fd๊ฐ’์œผ๋กœ ์ฝ๋Š” ๊ฒฝ์šฐ ๊ฐ’์€ 0, ์“ฐ๋Š” ๊ฒฝ์šฐ ๊ฐ’์€ 1์ด ๋“ค์–ด๊ฐ„๋‹ค.

rsi๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด๋ฉฐ, rdx๋Š” ์–ผ๋งˆ๋‚˜ ์ฝ์„์ง€ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

mov rax,60์€ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ๋ฅผ ๋œปํ•œ๋‹ค.

 


 $nasm -f elf64 -o echo.o echo.s
 $ ld -o echo echo.o

ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด echo ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋˜‘๊ฐ™์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2023.01.12 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ์Šคํƒ ํ”„๋ ˆ์ž„

 

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์Šคํƒ ํ”„๋ ˆ์ž„

https://youtu.be/ZFOHvzXcao0 ์˜ค๋Š˜๋„ ๋™๋นˆ๋‚˜๋‹˜์˜ ๊ฐ•์˜๋กœ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด์ž. $ nano sum.c ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๊ธฐ ์œ„ํ•ด nano๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. sum์ด๋ผ๋Š” ์ด๋ฆ„์˜ C์–ธ์–ด ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ ๋‹ค. ๊ทธ ํ›„ ๋‚ด์šฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€

dangsdangs.tistory.com