๋ฌธ์ ๋ ์ฝ๋์์ง ์ฌ์ดํธ์์ ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค. (์์ถ ํด์ ์ ๋น๋ฐ๋ฒํธ codeengn)
๋ชฉํ๊ฐ : OEP + ๋ฑ๋ก์ฑ๊ณต์ผ๋ก ๊ฐ๋ ๋ถ๊ธฐ์ ์ OPCODE
OPCODE ๋?
๋๋ฒ๊ฑฐ์์ ์ฃผ์๊ฐ ํ์๋๋ ์ฐฝ๊ณผ ์ด์ ๋ธ๋ฆฌ ๋ช ๋ น์ด ํ์๋๋ ์ฐฝ ์ฌ์ด์ ์ซ์๋ก ๋ํ๋๋ ์ฝ๋.
์ปดํจํฐ๊ฐ ์คํํ ์ฒ๋ฆฌ์ ์ข ๋ฅ (์ฐ์ฐ์ ์ข ๋ฅ)๋ฅผ ๋ํ๋.
์คํ์ ์์ผ๋ด ๋๋ค.
์๋ฌด๊ฒ๋ ์ ๋ ฅ์ด ๋์ง ์๋๊ตฐ์.
OEP ์ด์ผ๊ธฐ๊ฐ ๋์์ผ๋ ํจํน์ด ๋์ด์๊ฒ ์ฃ ?
PEid๋ก ํ์ธํด๋ด ์๋ค.
ASPack์ผ๋ก ํจํน์ด ๋์ด์์ต๋๋ค.
ASPack ํจํน์ ํน์ง?
PUSHAD -> ๋ณตํธํ ์ฝ๋ ์คํ -> POPAD -> Return 0C -> OEP ๊ฐ PUSH -> Return์ผ๋ก OEP ์ฃผ์๋ก ์ด๋
๋๋ฒ๊ฑฐ๋ก ์ด์ด๋ด ์๋ค.
PUSHAD ๋ช ๋ น์ด ์๋ค์.
์ฐํด๋ฆญ -> Search for -> All comands ๋ก POPAD ๋ฅผ ์ฐพ์๊ฐ๋ ค ํ์ผ๋ POPAD์ ๊ฐ์๊ฐ ๊ต์ฅํ ๋ง์๋ ๊ด๊ณ๋ก RETN 0C ๋ฅผ ๊ฒ์ํ์ฌ ์ด๋ํด์ค๋๋ค. (x32dbg ๋ฅผ ์ฌ์ฉํ์ ๋ค๋ฉด ret C ๋ก ๊ฒ์ํด ์ฐพ์ผ์๋ฉด ๋ฉ๋๋ค.)
์ด๋ ๊ฒ ๋จ๋ฒ์ ์ด๋ํ์ต๋๋ค.
RETN 0C ๋ช ๋ น์ BP๋ฅผ ๊ฑธ๊ณ ์ฌ๊ธฐ๊น์ง ์คํํ๋ฉด ํ๋จ์ PUSH ๋ช ๋ น์ด๊ฐ PUSH (OEP) ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋ง์ด์ฃ .
๊ทธ๋ฆฌ๊ณ ๋ค์์ RETN ๋ช ๋ น์ด๋ก ์ธํด OEP ๋ก ์ด๋ํฉ๋๋ค.
OEP ๋ 00445834 ๊ฐ ๋๊ฒ ๋ค์.
์ฐ๋ฆฌ๋ ์๋ณธ ์ฝ๋๊ฐ ์์ถํด์ ๋ ์์น๋ก ์ด๋ํด๋ด ์๋ค.
OEP๋ก ์์ง๋ง ๋์กํ ์ฝ๋๋ฐ์ ๋ณด์ด์ง ์์ต๋๋ค.
[Ctrl + A] ํค๋ก Analyse code ๊ธฐ๋ฅ์ ์ด์ฉํด ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ์ฐํด๋ฆญ -> Search for -> All referenced text strings ๊ธฐ๋ฅ์ ์ด์ฉํ๊ฒ ์ต๋๋ค.
์ฌ์ค ๋คํ๋ฅผ ๋ ์ฃผ๋ ค๊ณ ํ๋๋ฐ, ์ ํ ์ํ์์๋ ์ถฉ๋ถํ ๊ตฌํ ์ ์๊ธฐ์ ์๋ตํ ๊ฒ ์ ๋๋ค.
์กฐ๊ธ๋ง ์คํฌ๋กค ํด ๋ณด๋ฉด ์ฑ๊ณต์ ์ถ๋ ฅ๋ ๋ฌธ์์ด์ด ๋ณด์ ๋๋ค.
์ฌ๊ธฐ๋ก ์ด๋ํด์ค๋๋ค.
์ด์ ๋ ๋ฑ๋ก ์ฑ๊ณต์ผ๋ก ๊ฐ๋ ๋ถ๊ธฐ๋ฌธ์ OPCODE ๋ฅผ ๊ตฌํด์ผ ํฉ๋๋ค.
๋ฑ๋ก ์ฑ๊ณต ์ฃผ์๋ ์ฐพ์์ผ๋, ๋ถ๊ธฐ์ ์ ์ด ์์ ์์ ๊ฒ๋๋ค.
๋ฐ๋ก ์์ ์กฐ๊ฑด ๋ถ๊ธฐ๋ฌธ์ด ์๋ ์ง ํ์ธํด์ค๋๋ค.
004454D4 ์ฃผ์์ JNZ ๋ช ๋ น์ด ์๋ค์.
์ด๋ค ํจ์๋ฅผ ํธ์ถํ๊ณ ๊ทธ ๋ฐํ๊ฐ์ด 0์ด ์๋๋ฉด ์คํ๋๋ ๋ฏ ํฉ๋๋ค.
์ด ๋ช ๋ น์ด ์คํ๋๋ฉด ๋ฑ๋ก ์ฑ๊ณต์ ๊ฑด๋๋ฐ๊ณ XOR EAX, EAX (Return 0) ๋ช ๋ น์ผ๋ก ์ด๋ํ๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก JNZ ์ ์คํ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ์ด ์ฑ๊ณต/์คํจ๋ก ๋ถ๊ธฐํ๋ ๊ฑธ ํ์ธํ ์ ์์์ต๋๋ค.
์ด ๋ช ๋ น์ด ๋ฑ๋ก ์ฑ๊ณต์ผ๋ก ๊ฐ๋ ๋ถ๊ธฐ์ ์ด ๋๊ฒ ์ฃ ?
์ด ๋ถ๊ธฐ์ ์ OPCODE ๋ ์ ์์ ์์ 7555 ์ ๋๋ค.
OEP๋ 00445834 ์ด๊ณ , ๋ถ๊ธฐ์ ์ OPCODE ๋ 7555์ ๋๋ค.
OEP + OPCODE = 004458347555
'reverse engineering > CodeEngn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CodeEngn] Basic RCE L12 ๋ฌธ์ ํ์ด (0) | 2020.12.12 |
---|---|
[CodeEngn] Basic RCE L11 ๋ฌธ์ ํ์ด (2) | 2020.12.11 |
[CodeEngn] Basic RCE L09 ๋ฌธ์ ํ์ด (0) | 2020.12.09 |
[CodeEngn] Basic RCE L08 ๋ฌธ์ ํ์ด (0) | 2020.12.08 |
[CodeEngn] Basic RCE L07 ๋ฌธ์ ํ์ด (5) | 2020.12.07 |