โ (์์คํ ํดํน ๋ก๋๋งต๊ณผ ์ง๋๊ฐ ๊ฒน์น๋ค.Background: Computer Architecture์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์)
Q1.
rax์์ rbx๋ฅผ ๋บ์ ๋, ZF๊ฐ ์ค์ ๋์๋ค. rax์ rbx์ ๋์๋ฅผ ๋น๊ตํ์์ค
ํ์ด)
rax๋ ๋์ฐ๊ธฐ ๋ ์ง์คํฐ(๋ฒ์ฉ ๋ ์ง์คํฐ), rbx๋ ๋ฒ ์ด์ค ๋ ์ง์คํฐ์ด๋ค. ๊ฐ๊ฐ ํจ์์ ๋ฐํ๊ฐ์ด ์ ์ฅ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค.
ํ์ฌ rax - rbx์ ๊ฒฐ๊ณผ ZF(Zero Flag)๋ผ๋ ํ๋๊ทธ ๋ ์ง์คํฐ๊ฐ ์ค์ ๋์์ผ๋ฏ๋ก rax์ rbx๊ฐ ๋ญ๋ ๊ฐ์ rax == rbx ์ํ์ผ๊ฒ์ด๋ค.
์ ๋ต) ==
Q2. โ
rax = 0x0123456789abcdef ์ผ ๋, al์ ๊ฐ์?
ํ์ด)
x86-64 ์ํคํ ์ฒ์ ์ผ๋ฐ์ ์ธ ๋ฒ์ฉ ๋ ์ง์คํฐ๋ 64๋ฐ์ดํธ์ด๋ค. ์ฆ rax๋ ํ์ฌ 8๋ฐ์ดํธ(64๋นํธ)์ด๋ค. ๋ฐ๋ผ์ al์ 0xef์ด๋ค
ef cd ab 89 67 45 23 01 (๊ฐ ๋ฐ์ดํธ๋ฅผ ๋ค์ง์ด์ ์ ์ฅ)
๋ ์ง์คํฐ | ํฌ๊ธฐ | ํด๋น ๊ฐ(๋ฆฌํ ์ค๋์ ๊ธฐ์ค) |
al | 8๋นํธ(ํ์ 1๋ฐ์ดํธ) | ef |
ah | 8๋นํธ(ํ์ 2๋ฒ์งธ ๋ฐ์ดํธ) | cd |
ax | 16๋นํธ(ah + al) | cdef |
eax | 32๋นํธ(ํ์ 4๋ฐ์ดํธ) | 89abcdef |
rax | 64๋นํธ(์ ์ฒด) | 0123456789abcdef |
03.
rax = 0x123456789abcdef ์ผ ๋, ah ๊ฐ์?
ํ์ด)
์์์ ๋ดค๋๊ฑฐ๋ค. ah๋ ํ์ 2๋ฐ์ดํธ์ด๋ฏ๋ก 0xcd์ด๋ค.
04.
rax = 0x123456789abcdef ์ผ ๋, eax์ ๊ฐ์?
ํ์ด)
์์์ ๋ดค๋๊ฑฐ๋ค. ์๋ง ์ ๊ฐ๋ฅด์ณ์ค๊ฑธ ์ค์ค๋ก ์ฐพ์๋ณด๊ฒํ๊ณ ๋ฐ๋ณต์ํค๋ ๊ฒ ๊ฐ๋ค.
al -> ah -> ax -> eax -> rax์ด๋ฏ๋ก eax๋ ํ์ 4๋ฐ์ดํธ์ด๋ค. ๋ฐ๋ผ์ 0x89abcdef์ด๋ค.
05.
rax = 0x123456789abcdef์ผ ๋, ax์ ๊ฐ์?
ํ์ด)
al(ํ์ 1๋ฐ์ดํธ) -> ah(ํ์ 2๋ฒ์งธ ๋ฐ์ดํธ) -> ax(ah+al) -> eax(ํ์ 4๋ฐ์ดํธ) -> rax(์ ์ฒด)์ด๋ฏ๋ก ax๋ 0xcdef์ด๋ค.
์ ๋ค์ง์ด์ ์ ์ฅํ ๊น?
-> x86-64 ์ํคํ ์ณ์์๋ ๋ฆฌํ ์ค๋์ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๋น ์๋์์ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ์ซ์ ํ๊ธฐ๋ฒ๊ณผ ๋์ผํด์ ์ฝ๊ธฐ ์ฝ์ง๋ง, ๋ฆฌํ ์๋์์ ๋ฐ์ดํธ ์์๊ฐ ๋ค์งํ ๊ฒ ์ฒ๋ผ ์ ์ฅํ์ฌ ์ง๊ณผ์ ์ผ๋ก ์ฝ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. ํ์ง๋ง ์ฐ์ฐ์ ํธ์์ฑ, ํ์ฅ๋ฉด์ ์ด์ , ํธํ์ฑ, ์ ํต์ ์ธ ์ด์ ๋ก ๋ฆฌํ ์๋์์ ์ฌ์ฉํ๋ค.
'๐ฒ Dreamhack > Reverse Engineering' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
x86 Assembly: Essential Part(1) (0) | 2025.03.22 |
---|---|
Background: Windows Memory Layout (0) | 2025.03.18 |
Background: Static Analysis vs. Dynamic Analysis (0) | 2025.03.18 |
Background: Binary (0) | 2025.03.18 |
Introduction: Reverse Engineering (1) | 2025.03.16 |