๋ฌธ์ ์ดํด
๋๋ฆผํต ์๊ฒ์ ๋ฆฌ๋ฒ์ฑ ๋ถ์ผ์์ rev-basic-1 ๋ฌธ์ ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ค๋ค.
[์๋์ฐ+R] ํค๋ฅผ ๋๋ฅด๊ณ cmd ์ฐฝ์ ์ด์ด์ค๋ค. "cd (๋ด๊ฐ ์คํํ๊ณ ์ถ์ ํ์ผ ์ฃผ์)" ์ ๋ ฅํ๊ณ "(์คํ ํ๋ก๊ทธ๋จ).exe"๋ฅผ ์ ๋ ฅํ๋ฉด ์ ํ๋ฉด์ฒ๋ผ "Input : "์ด ๋ฌ๋ค.
์๋ฌด ์ซ์๋ ์ ๋ ฅํด์คฌ๋๋ "Wrong"์ด ๋ด๋ค. ์ด ๋ฌธ์ ๋ ์ ๋ต์ด ๋๋ ํน์ ๋ฌธ์๋ ์ซ์๋ฅผ ์ ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๊ณํ
- X64 Debuger๋ก ํ๋ก๊ทธ๋จ์ ์ด์ด ์ด๋ค ํ๋ก๊ทธ๋จ์ธ์ง ๋ถ์ํ ์ค๋น๋ฅผ ํ๋ค.
- "Wrong"์ด๋ "Input" ๊ด๋ จ ๋ช ๋ น์ด๊ฐ ์ด๋ ์๋์ง ์ฐพ์ main ํจ์ ๋ถ๋ถ์ ์์๋ธ๋ค.
- "Wrong" ๋๋ "Correct"๋ฅผ ๊ฒฐ์ ์ง๋ ์ฝ๋, ๋๋ ํจ์๊ฐ ๋ฌด์์ธ์ง ์์๋ธ๋ค.
- ๊ทธ ๊ฒฐ์ ์ง๋ ์ฝ๋๋ฅผ ๋ถ์ํด ์ด๋ค ๊ฐ์ ์ ๋ ฅํด์ผ ์ถ๋ ฅ๊ฐ์ด "Correct"๊ฐ ๋๋์ง ์์๋ธ๋ค.
๋ฌธ์ ์คํ
X64 Debuger๋ก chall1 ํ์ผ์ ์ด์ด์ค๋ค. ์ด๋ฉด ์์ ๊ฐ์ ํ๋ฉด์ด ๋ณด์ธ๋ค.
์๋ ๊ฒ์ ๋จผ์ "Wrong" ์ถ๋ ฅ์ด ์ด๋์ ์ด๋ฃจ์ด์ง๋์ง ์ฐพ์์ค๋ค. ("Input : "์ ์ฐพ์์ค๋ ์ข๋ค.)
์ฐ์ธก ์๋จ ๊ฐ์ฅ ํฐ ํ๋ฉด์ ๋ง์ฐ์ค ์ฐํด๋ฆญ ํ๊ณ [๋ค์์ ์ฐพ๊ธฐ]→ [๋ฌธ์์ด ์ฐธ์กฐ(s)]→ [๋ชจ๋ ๋ชจ๋]๋ก ๋ค์ด๊ฐ ์ฐพ์์ค๋ค.
๋ค์ด๊ฐ๋ฉด ์์ ํ๋ฉด์ด ๋์จ๋ค. ์๋ ๊ฒ์ ์ฐฝ์ "Wrong"์ ๊ฒ์ํ ๋ค ํด๋น ๋ช ๋ น์ด๋ฅผ ๋๋ธ ํด๋ฆญํ์ฌ ์ด๋ํ๋ค.
์ด๋ํ๋ฉด ๋ฌธ์๋ ์ซ์๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ Wrong, Correct๋ฅผ ํ๋ณํ์ฌ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ์ ํ๋ฆฐํธ ํ๋ ํจ์๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
main ํจ์๋ฅผ ์ฐพ์ ๊ฒ์ด๋ค. ์ด์ main ํจ์์์ Wrong, Correct๋ฅผ ๊ฒฐ์ ์ง๋ ๋ช ๋ น์ด๋ ํจ์๋ฅผ ์ฐพ์์ค๋ค.
main ํจ์๋ฅผ ๋ฏ์ด๋ณผ ์ฐจ๋ก์ด๋ค. ๋จ์ถ์ด๋ฅผ ์จ๊ฐ๋ฉฐ ํจ์๋ฅผ ์ดํด๋ณธ๋ค.
cf) ํจ์ ๋จ์ถ์ด:
F7 | ์ฝ๋ ํ ์ค ์คํ (call ํจ์ ์ง์ ) |
F8 | ์ฝ๋ ํ ์ค ์คํ (call ํจ์ ์ง์ ํ์ง ์๊ณ ์ง๋๊ฐ) |
F9 | ํ๋ก๊ทธ๋จ ์คํ |
ctrl + g | ์ฃผ์ ์ด๋ |
ํจ์๋ฅผ ์์ธํ ์ดํด๋ณด๋ฉด Input ๋ค์์ ์ฒซ ๋ฒ์งธ๋ก ํจ์๋ฅผ callํ๋ค. Input ๋ฐ๋ก ๋ค์์ ๋์ค๊ณ ์์ผ๋ฏ๋ก ์ ๋ ฅ ๊ด๋ จ ํจ์์ผ ๊ฒ์ด๋ค. %256s ๋ค์์ call ํ ํจ์๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ํจ์๋ก ์ถ์ธกํ ์ ์๋ค.
๋ค์์ผ๋ก 'chall1.7FF6C9A61000' ํจ์๋ฅผ ํธ์ถํ๋ค. ์ด๋ค ํจ์์ธ์ง ์์ง ๋ชจ๋ฅธ๋ค.
๊ทธ๋ฐ๋ฐ ๋ค์ ๋ช ๋ น์ด์์ test eax eax๊ฐ ๋์ค๊ณ ๊ทธ ์๋ซ์ค์ je ...613B6์ด ๋์จ๋ค.
je๋ 'jump equal'์ ์ฝ์๋ก ๊ฐ์ผ๋ฉด 'je ...613B6' ํจ์๋ก ์ด๋ํ๋ผ๋ ๋ช ๋ น์ด์ด๋ค.
eax์ eax๋ ๊ฐ์ ๋ ์ง์คํฐ์ด๋ฏ๋ก ๊ฐ์ ์๋ฐ์ ์๋ค. ๋ฐ๋ผ์ 'je ...613B6' ํจ์๋ก ๋ฌด์กฐ๊ฑด ์ด๋ํ๊ฒ ๋๋๋ฐ,
'je ...613B6' ํจ์๋ก ๋ค์ด๊ฐ๋ฉด "Wrong"์ด ์ถ๋ ฅ๋๋ ๋ช ๋ น์ด๋ก ์ด์ด์ง๋ค.
์ฆ test eax eax๋ฅผ ๋ง๋์ง ์๊ฒ ํด์ผ ํ๋ค.
๋ฐ๋ผ์ 'chall1.7FF6C9A61000' ํจ์๊ฐ "Wrong" ๋๋ "Correct" ์ถ๋ ฅ์ ๊ฒฐ์ ํ๋ ํจ์์์ ์ ์ ์๋ค.
๊ฒฐ์ ์ ํจ์๋ฅผ ์ฐพ์์ผ๋ ๋๋ธ ํด๋ฆญํด ๋ ์ดํด๋ณธ๋ค. ๋๋ธ ํด๋ฆญํ๋ฉด ์์ ํ๋ฉด์ด ๋ณด์ธ๋ค.
ํจ์ ์ด๋ฐ PUSH ๋ถ๋ถ์ ๋์ด๊ฐ๊ณ ๊ทธ ์ดํ๋ถํฐ ์ดํด๋ณด๋ฉด,
์์ ๊ทธ๋ฆผ์ฒ๋ผ movzx, cmp, je, xor, jmp ๋ช ๋ น์ด๊ฐ ๊ณ์ ๋ฐ๋ณต๋๊ณ ์๋ค.
movzx๋ ์์ ๋ฐ์ดํฐ๊ฐ ๋ค์ ๋ฐ์ดํฐ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์๋ mov ๋ ์ ์๊ฒ ํ๋ ๋ช ๋ น์ด์ด๋ค.
eax์ ์ ๋ ฅํ ๋ฌธ์์ด ์ค ์ฒซ ๋ฒ์งธ ๋ฌธ์์ 61(a)๋ฅผ ๋น๊ตํ๋ค.
je์ด๋ฏ๋ก ๊ฐ์ผ๋ฉด ๋ค์ ๋ฌธ์ ๋น๊ต ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๊ณ , ๊ฐ์ง ์์ผ๋ฉด ๋ฐ๋ก ๋ฐ์ค์ธ xor eax eax ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด call1.7FF6C9A612bE๋ฅผ ํธ์ถํ๋ค.
call1.7FF6C9A612bE๊ฐ ํธ์ถ๋๋ฉด main ํจ์๋ก return ํ๋ค.
๋ฐ๋ผ์ ์ ๋ ฅํ ๋ฌธ์์ด๊ณผ ๋น๊ตํ๊ณ ์๋ ๋ฌธ์์ด์ด ๋์ผํด์ผ ํ๋ค.
์์ ๋์จ ๋ฌธ์์ด์ ์ฐจ๋ก๋๋ก ์ ๋ ฅํด์ค๋ค. ์ฒซ ๋ฒ์งธ 'C'๋ ๋๋ฌธ์์์ ์ฃผ์ํ๋ค.
"Correct" !!
์ค๋ ๋ฐฐ์ด ๊ฒ
- je(jump equal) ํจ์๊ฐ 'test eax eax'์ ๋ง๋ ๋ง์น ์กฐ๊ฑด๋ฌธ์ฒ๋ผ ์ญํ ํ๊ณ ์๋ค.
- main ํจ์, ๊ฒฐ์ ์ ํจ์๋ฅผ ์ ํํ๊ฒ ์ฐพ์์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ฐ์ฑํ๊ธฐ
- 'call1.7FF6C9A612bE'๊ฐ ํธ์ถ๋์ด ๊ฒฐ์ ์ ํจ์๋ฅผ ๋๊ฐ ๋ ์ ํํ ์ด๋ป๊ฒ "Wrong" ์ถ๋ ฅ๊น์ง ์ด์ด์ง๋์ง ๊ตฌ์ฒด์ ๊ณผ์ ์ ์ ๋ชจ๋ฅด๊ฒ ๋ค.
'๐ง ๋ฆฌ๋ฒ์ฑ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Dreamhack ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: rev-basic-2 (0) | 2023.10.31 |
---|---|
๊ธฐํ ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: easy-crackme1 (1) | 2023.10.09 |
Dreamhack ๋ฆฌ๋ฒ์ฑ ๋ฌธ์ ํ์ด: rev-basic-0 (0) | 2023.08.05 |
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง: ์ด์ ๋ธ๋ฆฌ (ํจ์) (0) | 2023.08.03 |
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง: ์ด์ ๋ธ๋ฆฌ (๋ ์ง์คํฐ, ์ต์ฝ๋) (0) | 2023.08.02 |