'ํ๋ก๊ทธ๋จ์ด ๋น๋๋๋ ๊ณผ์ ' ํ๋ก๊ทธ๋จ (์คํํ์ผ)์ด ๋ง๋ค์ด ์ง๋ ๊ณผ์ ์ ๋ํด ๋ค๋ค๋ณผ๊น ํฉ๋๋ค.
์ค๋ช
์ ์์ ํ์ํ ์ฉ์ด์ ๊ฐ๋ตํ ์ง์์ ๋จผ์ ์ค๋ช
๋๋ฆฌ๊ณ , ๊ณผ์ ์ ๋ณด์ฌ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ปดํ์ผ์ ๊ด๋ จํ ์ ๋ณด๋ lucete1230-cyberpolice.tistory.com/157 ์ด์ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ง์ปค๋?
๋๋ณด๊ธฐ
๋ง์ปค(linker) ๋๋ ๋งํฌ ์๋ํฐ(link editor)๋ ์ปดํจํฐ ๊ณผํ์์ ์ปดํ์ผ๋ฌ๊ฐ ๋ง๋ค์ด๋ธ ํ๋ ์ด์์ ๋ชฉ์ ํ์ผ์
๊ฐ์ ธ์ ์ด๋ฅผ ๋จ์ผ ์คํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณํฉํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
์ ๋์ค ๊ณ์ด ์ด์ ์ฒด์ ์์ ๋ก๋๋ฅผ ๋ง์ปค์ ๋์์ด๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค. (์ถ์ฒ : ์ํค๋ฐฑ๊ณผ)
ใ
์ฃผ์ ์ญํ ๋ค
- ์ฃผ ๊ธฐ์ต์ฅ์น์ ํ ๋น(ํ๋ณด)
- ์ฐ๊ฒฐ(Linking)
- ์ฌ๋ฐฐ์น(Relocation)
- ํ๋ก๊ทธ๋จ ์ฐ๊ฒฐ ์ ์ฌ(Loading)
: dll ์ด๋? goddaehee.tistory.com/185
Linker(๋ง์ปค)๋ ๋งํน์ ๋ด๋นํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
๋ง์ปค๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋
๋ฆฝ์ ์ธ ์ปดํ์ผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์์ฃผ ์ค์ํ ์ญํ ์ ๋ด๋นํ๋ค.
๋ง์ปค ๋๋ถ์ ํฐ ๊ท๋ชจ์ ์์ฉํ๋ก๊ทธ๋จ์ ํ ๊ฐ์ ์์ค ํ์ผ๋ก ๊ตฌ์ฑํ๋ ๋์ ๋ณ๋๋ก ์์ ํ ์ ์๊ณ ,
์ปดํ์ผํ ์ ์๋ ๋ณด๋ค ๊ด๋ฆฌํ ๋งํ ๊ท๋ชจ์ ๋ ์์ ๋ชจ๋๋ค๋ก ๋๋ ์ ์๋ค.
์ฆ, ์์ฃผ ๊ฑฐ๋ํ ํ๋ก๊ทธ๋จ์ ํ๋์ ์์ค ํ์ผ์ด ์๋๋ผ ์๋ง์ ์์ค ํ์ผ๋ก ๋ชจ๋ํํ์ฌ ๊ฐ๋ฐ์ ์งํํ ์ ์๋ ๊ฒ์ด๋ค. ๋ง์ปค ๋๋ถ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ค์ ํ ๊ฐ๋ฅผ ๋ณ๊ฒฝํ ๋,
๋ค๋ฅธ ํ์ผ๋ค์ ์ฌ์ปดํ์ผํ ํ์ ์์ด ์ด ํ์ผ๋ง์ ๊ฐ๋จํ ์ฌ์ปดํ์ผํ๊ณ ์ด๋ฅผ ๋ค์ ๋งํฌํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ ์ ์๋ค.
Linking(๋งํน)์ ์ฌ๋ฌ ๊ฐ์ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ ์ฐ๊ฒฐํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์ ์๊ณ ์คํ๋ ์ ์๋ ํ ๊ฐ์ ํ์ผ๋ก ๋ง๋๋ ์์
์ด๋ค. ์ด ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋์ด ์คํ๋๋ค. ๋งํฌ๋ ์ปดํ์ผ์์ ์ํ๋๋ ๊ฒฝ์ฐ๋ ์๊ณ , ๋ก๋ฉ์์ ์ํ๋๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์คํ์์ ์ํ๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋งํน์ด๋ ์ปดํ์ผ ์ดํ, ์คํํ๊ธฐ ์ด์ ์ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ ๋งํ๋ค.
๋งํน์ ์ ์ ๋งํน๊ณผ ๋์ ๋งํน, ๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋๋ฐ, ์ด ๋ ๋งํน ๋ฐฉ์์ ์ฐจ์ด๋ ์๋ ๋งํฌ๋ฅผ ํ์ธํด์ฃผ์ธ์.
jhnyang.tistory.com/42
๋ก๋๋ ๋ฌด์์ธ๊ฐ?
๋ก๋(loader)๋ ์ปดํจํฐ ๋ด๋ถ๋ก ์ ๋ณด๋ฅผ ๋ค์ฌ์ค๊ฑฐ๋ ๋ก๋ ๋ชจ๋์ ๋์คํฌ ๋ฑ์ ๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ก ๋ถํฐ ์ฃผ ๊ธฐ์ต์ฅ์น์
์ ์ฌํ๋ ์์คํ
์ํํธ์จ์ด์ด๋ค.
๋ชจ๋ ๊ฐ๋
/์ฉ์ด ํ์
ํ๊ธฐ โผ
๋๋ณด๊ธฐ
์์ค ํ์ผ
- ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ฌธ๋ฒ๋ค (C , JAVA)
์ค๋ธ์ ํธ ํ์ผ
- ์ํ ์ฝ๋, ๋ฐ์ดํฐ ๋ค์ด ์ ์ฅ๋์ด ์๋ค.
- ๋ ์ด๋ฐ ์ํ์ฝ๋, ๋ฐ์ดํฐ๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ์ ์ฅ๋์ด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ์ฃผ์ ์ ๋ณด๋ค์ด ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋ณ์๋ค์ ์ ๋ณด ๋ฑ๋ฑ..์ด ์ ์ฅ๋์ด์๋ Symbol Table์ด ์๋ค.
- Linker๊ฐ ํ๋ก๊ทธ๋จ์ Linking ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ ๋ณด๊ฐ ์๋๋ฐ ๊ทธ ์ ๋ณด๋ค์ด ์ ์ฅ๋ ํ
์ด๋ธ์ Relocation Table ์ด๋ผ ํ๋ค.
์ปดํ์ผ๋ฌ
- ๊ฐ ์์คํ์ผ์ ์ค๋ธ์ ํธํ์ผ๋ก ๋ณํ ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค.
๋ง์ปค
- ๋ชจ๋ ์ค๋ธ์ ํธ ํ์ผ๋ค์ ํ๋์ ์ค๋ธ์ ํธ ํ์ผ๋ก ํฉ์น๋ค(Executable file๋ก ํฉ์น๋ค)
๋ก๋
- Executable file ์ ์ฝ๋๋ค.
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ธ์ ํธ ํ์ผ์์๋ ๋ด์ฉ๋ค์ ์ฌ๋ฆฌ๊ณ
- context๋ค์ ๋ง๋ค๊ณ ํ๋ก๊ทธ๋จ์ ์ํ์ํฌ ์ ์๋๋ก ๋ง๋ ๋ค.
- OS์ ํ ๋ถ๋ถ์ด๋ค.
Section
- ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์ณ ๋ง๋ค์ด์ง ์ค๋ธ์ ํธ ํ์ผ ์์๋ ์ฌ๋ฌ๊ฐ์ Section์ด ์กด์ฌํ๋ค.
- ์ค๋ธ์ ํธ ํ์ผ์ ๊ตฌ์ฑํ๋ Unit ๋ค ๋๋ ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ด๋์ ๋จ์๋ค์ Section ์ด๋ผ ํ๋ค.
- ๊ฐ ์น์
๋ค์ ์ถํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ๋
์์ ์ธ ์์ญ์ ๊ฐ์ง๊ฒ ๋๋ค. -> ์ด ์์ญ์ ์ธ๊ทธ๋จผํธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๊ฐ ์น์
์์๋ ํจ์์ด๋ฆ์ด๋, ๋ณ์์ด๋ฆ๋ฑ , ์ฌ๋ฌ ์ฌ๋ณผ๋ค์ด ์กด์ฌํ๊ณ ๊ทธ ์น์
์์์ ์์ ๋ง์ ์์น์ธ offset์ ์ฃผ์๋ก ๊ฐ์ง๋ค.
์ถ์ฒ : ๊ตฌ๊ธ ๋ธ๋ก๊ทธ
์ด ๊ณผ์ ์ ์ด๋ ๊ฒ ์งํ๋จ.
์ฝ๋ ์์ฑ -- (์ปดํ์ผ)--> ์ค๋ธ์ ํธ ํ์ผ -- (๋งํน)--> ์คํ ํ์ผ -- (๋ก๋) --> ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ ๋ฐ ์ํ.
*** ํ๋ก๊ทธ๋จ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด์ผ ํ ๊น? ***
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋ณํ ์์
์ ๊ฑฐ์น ํ์ผ๋ค์ด ์ ์ฅ๋๋ ๊ณณ์ ํํ ๋งํ๋ ์คํ ๋ฆฌ์ง(ex. HDD, SSD..)์ด๋ค. CPU์ ์คํ ๋ฆฌ์ง๊ฐ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ์๋ ๋๋ฌด ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ CPU๊ฐ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ต์ ๋ฉ๋ชจ๋ฆฌ(ex. RAM)์ ์ ์ฌ๋์ด์ผ ํ๋ค.
(์ต์๋ผ๊ณ ๋งํ๋ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ข
๋ฅ์๋ ์์ฐจ์ ์ผ๋ก ์ฌ๋ฌ ๊ฐ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค.)
ํํ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ RAM์ ํ๋ฐ์ฑ์ด๊ธฐ ๋๋ฌธ์ ํ์์๋ ์คํ ๋ฆฌ์ง์ ์ ์ฅํด ๋์๋ค๊ฐ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ์์ผ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๊ฒ์ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ด 'ollydbg'
์ถ์ฒ: https://seohs.tistory.com/259
(์๋ ์ฃผ์๋ค ์ฐธ๊ณ ํ์๋ฉด ์ดํด๊ฐ ๋ ๋น ๋ฅผ ๊ฒ ๊ฐ๋ค์)
์ฐธ๊ณ ์ฌ์ดํธ โผ