๐ท Reverse Engineering Introduction
# ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ด๋?
: ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง(Reverse Engineering)์ ์ด๋ค ์ ํ, ์์คํ , ์ํํธ์จ์ด, ๋๋ ๊ธฐ์ ์ ๋์ ์๋ฆฌ๋ ์ค๊ณ๋ฅผ ์ดํดํ๊ณ ๋ถ์ํ๊ธฐ ์ํด ์ญ์ผ๋ก ์์ ํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง(Reverse Engineering)์ ์ผ๋ฐ์ ์ผ๋ก ์ ํ์ด๋ ์์คํ ์ ๋ด๋ถ ๊ตฌ์กฐ, ์๋ ๋ฐฉ์, ๋๋ ์ํํธ์จ์ด์ ์ฝ๋์ ์๊ณ ๋ฆฌ์ฆ์ ํ์ ํ๊ฑฐ๋ ์ฌ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๐ท ์ปดํ์ผ๋ฌ(Compiler)์ ์ธํฐํ๋ฆฌํฐ(Interpreter)
์ปดํ์ผ๋ฌ | ์ธํฐํ๋ฆฌํฐ | |
์คํ ๋ฐฉ์ | ์ ์ฒด ํ๋ก๊ทธ๋จ์ ํ ๋ฒ์ ๋ฒ์ญ ํ ์คํ | ํ ์ค OR ํ ๋ธ๋ก์ ํ ๋ฒ์ ๋ฒ์ญํ๊ณ ์คํ |
๋ฒ์ญ ์์ | ๋ฐํ์ ์ด์ (์ปดํ์ผ ์) | ๋ฐํ์ ์ค(์คํ ์) |
์๋ | ๋น ๋ฆ | ๋๋ฆผ |
์ค๋ฅ ๊ฒ์ถ ์์ | ์ปดํ์ผ ์ | ์คํ ์ |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ๋์ | ๋ฎ์ |
์ฌ์ฉ ์ธ์ด | C, C++, Java | Python, Ruby, JavaScript |
์ปดํ์ผ ๊ณผ์ | ์์ค ์ฝ๋ --> ๊ธฐ๊ณ ์ฝ๋ | ์์ค ์ฝ๋ --> ๋ฐ๋ก ์คํ |
์ด์์ฑ | ๋ฎ์ | ๋์ |
๐ท ์ปดํ์ผ(Compile)๊ณผ ๋์ปดํ์ผ(Decompile)
์ปดํ์ผ | ๋์ปดํ์ผ | |
์์ | ์์ค ์ฝ๋ --> ๊ธฐ๊ณ์ด ์ฝ๋ | ๊ธฐ๊ณ์ด ์ฝ๋ --> ์์ค ์ฝ๋ |
์ฃผ์ ๋จ๊ณ | 1. ์์ค ์ฝ๋ ๋ถ์ 2. ์ค๊ฐ ์ฝ๋ ์์ฑ 3. ๊ธฐ๊ณ์ด ์ฝ๋ ์์ฑ |
1. ๊ธฐ๊ณ์ด ์ฝ๋ ๋ถ์ 2. ์ค๊ฐ ์ฝ๋ ์ถ์ถ 3. ์ค๊ฐ ์ฝ๋๋ฅผ ์๋ ์์ค ์ฝ๋๋ก ๋ณํ |
์ธ์ด ์ข ์์ฑ | ์ปดํ์ผ๋ฌ์ ๋ฐ๋ผ ์์ด | ๊ธฐ๊ณ์ด ์ฝ๋์ ๊ด๋ จ X |
๊ฐ๋ ์ฑ ๋ณํ | ์์ค ์ฝ๋ ์์ค๋ก ๊ฐ๋ ์ฑ ๋จ์ด์ง | ๊ฐ๋ ์ฑ ์ผ๋ถ ๋ณต๊ตฌ ๊ฐ๋ฅ |
๐ท ์ ์ ๋ถ์(Static Analysis)๊ณผ ๋์ ๋ถ์(Dynamic Analysis)
์ ์ ๋ถ์ | ๋์ ๋ถ์ | |
๋ถ์ ์์ | ์ปดํ์ผ ๋๋ ๋น๋ ์ | ์คํ ์ค |
๋ฐ์ดํฐ ์์ค | ์์ค ์ฝ๋ ๋ฐ ์ ์ ๋ฆฌ์์ค | ์คํ ์ค์ ์์ฑ๋๋ ๋ฐ์ดํฐ์ ์ํธ ์์ฉ |
์ํ ๋ชฉ์ | ์ ์ฌ์ ์ด๋ฅ ์๋ณ ๋ฐ ์ฝ๋ ํ์ง ๊ฒ์ฆ |
๋ฐํ์ ๋์ ๋ถ์ ๋ฐ ๋ณด์ ๊ฒ์ฌ |
์ ํ์ฑ | ์คํ ์ค์ธ ๋ฐ์ดํฐ ๋ฐ ํ๊ฒฝ ๊ณ ๋ ค X | ์ค์ ์คํ ํ๊ฒฝ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ ๊ณ ๋ ค |
์ค๋ฅ ํ์ง | ์ปดํ์ผ ์๊ฐ์ ๋ฐ๊ฒฌ ๊ฐ๋ฅํ ์ค๋ฅ ์๋ณ |
๋ฐํ์ ์ค๋ฅ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์๋ณ |
ํ์ฉ ์ฌ๋ก | ์ ์ ์ฝ๋ ๊ฒ์ฌ ๋ฐ ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ |
์ฝ๋ ํ๋ฆ ๋ถ์ ๋ฐ ๋ณด์ ๊ฒ์ฌ ๋๊ตฌ |
์๊ฐ ๋ฐ ๋น์ฉ | ์ปดํ์ผ ๋ฐ ๋ถ์ ์๊ฐ ์ถ๊ฐ | ์คํ ์ค ๋ถ์ํ๋ ๋ฐํ์ ์ค๋ฒํค๋ |
์คํ ์๊ฐ ๋์ ์ ์ด | ์ํฅ X | ๋ฐํ์์ ๋์ ์กฐ์ ๊ฐ๋ฅ |
๐ท ์ ์ ๋ถ์(Static Analysis)์ ์ฅ·๋จ์
# ์ ์ ๋ถ์_์ฅ์
1. ์ด๊ธฐ ์ค๋ฅ ์๋ณ
: ์ ์ ๋ถ์์ ์ฝ๋๊ฐ ์ปดํ์ผ๋๊ฑฐ๋ ๋น๋๋๊ธฐ ์ ์ ์ค๋ฅ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ฃผ๋ฉฐ, ์ด๋ก ์ธํด ๊ฐ๋ฐ์๋ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ณ ํ๋ก๊ทธ๋จ ์์ ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
2. ์ฝ๋ ํ์ง ํฅ์
: ์ ์ ๋ถ์์ ์ฝ๋์ ๊ตฌ์กฐ, ๋ณต์ก์ฑ, ๊ฐ๋ ์ฑ ๋ฑ์ ํ๊ฐํ๊ณ ๊ฐ์ ์ ์ ์ ์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฝ๋ ํ์ง์ ํฅ์์ํค๊ณ ์ ์ง ๋ณด์์ฑ์ ๋์ผ ์ ์๋ค.
3. ๋ณด์ ๊ฐํ
: ์ ์ ๋ถ์์ ์ฝ๋์์ ๋ณด์ ์ทจ์ฝ์ ์ ํ์งํ๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ๋ ํ๋๋ฐ, ์ด๋ ์ ์ฑ ์ฝ๋๋ ๋ณด์ ์ํ์ ์ฌ์ ์ ์๋ณํ์ฌ ๋ณด์์ ๊ฐํํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค.
4. ๋น์ฉ ์ ๊ฐ
: ์ ์ ๋ถ์์ ๊ฐ๋ฐ ์ด๊ธฐ์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ๋ฏ๋ก, ์ฐจํ ์ค๋ฅ๋ฅผ ์์ ํ๋ ๋ฐ ํ์ํ ์์์ ์ ๊ฐํ ์ ์๋ค.
5. ๋ณ๋ ฌ ๋ถ์
: ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ ์ ๋ถ์ ๋๊ตฌ๋ ์ฌ๋ฌ ๋ถ๋ถ์ ๋ณ๋ ฌ๋ก ๋ถ์ํ ์ ์์ผ๋ฏ๋ก, ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
# ์ ์ ๋ถ์_๋จ์
๋จ์ | ์ค๋ช |
์ค๋ฅ ๋ฏธํ์ง ๊ฐ๋ฅ์ฑ | ํ๋ก๊ทธ๋จ์ ์คํํ์ง ์๊ณ ๋ถ์ํ๊ธฐ์ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ์ง ๋ชปํ ์ ๋ ์์ |
๋ณต์ก์ฑ ์ฒ๋ฆฌ ์ด๋ ค์ | ๋ณต์กํ๊ฑฐ๋ ๊ท๋ชจ๊ฐ ํฐ ์ฝ๋๋ฒ ์ด์ค์์์ ์ ์ ๋ถ์์ ๋ถ์ ์๊ฐ์ด ๋ง์ด ์์๋๊ณ , ๊ฒฐ๊ณผ ํด์์ ์ด๋ ค์์ด ์์ ์ ์์ |
๋์ ์ข ์์ฑ | ์ ์ ๋ถ์ ๋๊ตฌ๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํ๋ซํผ์ ์ข ์์ ์ด๊ธฐ์, ํ ํ๊ฒฝ์์์ ์คํ์ด ์ด๋ ค์ธ ์ ์์ |
๐ท ๋์ ๋ถ์(Dynamic Analysis)์ ์ฅ·๋จ์
# ๋์ ๋ถ์_์ฅ์
์ฅ์ | ์ค๋ช |
๋ฐํ์ ์ค๋ฅ ํ์ง ๊ฐ๋ฅ | ํ๋ก๊ทธ๋จ ์คํ ์ค ์ค์ ๋ฐํ์ ์ค๋ฅ์ ์์ธ ํ์ง ๊ฐ๋ฅ |
์์ํ ํ๋ก๊ทธ๋จ ๋์ ํ์ | ํ๋ก๊ทธ๋จ์ ๊ฐ๋ต์ ์ธ ๋์์ ์ฝ๋ ๋ถ์ ๊ณผ์ ์์ด ํ์ ๊ฐ๋ฅ |
# ๋์ ๋ถ์_๋จ์
๋จ์ | ์ค๋ช |
ํ๊ฒฝ ๊ตฌ์ถ ๋์ด๋ & ์์กด์ฑ | ๋ถ์ ํ๊ฒฝ ๊ตฌ์ถ์ด ์ด๋ ต๊ณ ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ์์ดํ ์ ์์ |
์คํ ์๊ฐ ์ค๋ฒํค๋ | ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ ์์ ์๊ฐ ๋ฐ ์์์ ์๋ชจํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๊ฐ ๋๋ ค์ง ์ ์์ |
์ปค๋ฒ๋ฆฌ์ง ๋ถ์กฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ | ๋ณต์กํ ํ๋ก๊ทธ๋จ ๋ฐ ๋๊ท๋ชจ ์์คํ
์์ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋ถ์กฑํ ์ํฉ์ด ๋ฐ์ํ ์ ์์ |