More Related Content
Similar to Pe+file+format
Similar to Pe+file+format (20)
Pe+file+format
- 2. ํ๋ก๊ทธ๋จ : ๊ณ์ฐ๊ธฐ(calc.exe)
๋ถ์๋๊ตฌ : PEview.exe
โ PE ๊ตฌ์กฐ์ ์ ์
- PE๋ Portable Executable์ ์ฝ์๋ก์ ์๋์ฐ์ฆ(Win32)์ ๊ธฐ๋ณธ ํ์ผ ๊ตฌ์กฐ์ด๋ค.
- ํด๋น ํ์ผ์ Win32 ํ๊ฒฝ ์ด๋์์๋ ์คํ ๊ฐ๋ฅํ๋ค.
- ์๋์ฐ์ฆ ํ์ผ ์ค EXE, DLL, SYSํ์ผ์ด PE๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ํ์ผ์ด ์คํ๋๊ธฐ ์ํด์๋ ๋ง์ ์ ๋ณด๊ฐ ํ์ํ๋ค.
โ ํ์ผ์ ์์ด์ฝ
โ ํ๋ก๊ทธ๋จ์ ์์์์น
โ ํธ์ถํ๋ ํจ์์ ์ ๋ณด ๋ฑ
- ํ๋ก๊ทธ๋จ๊ณผ ๊ด๋ จ๋ ๋ง์ ์ ๋ณด๊ฐ PE ๊ตฌ์กฐ์ ์ ์ฅ๋์ด ์๊ณ Win32 ์ด์์ฒด์ ๋ ํด๋น ์ ๋ณด๋ฅผ ์ฝ์ด
ํ๋ก๊ทธ๋จ์ ์คํ ์ํจ๋ค.
โ PEํ์ผ ์ข
๋ฅ
-์คํ ํ์ผ ๊ณ์ด : exe, scr(Screen Saver)
-๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณ์ด : dll, OCX(Active X)
-๋๋ผ์ด๋ธ ๊ณ์ด : SYS
-์ค๋ธ์ ํธ ํ์ผ ๊ณ์ด : OBJ
- 3. โ PE ๊ตฌ์กฐ์ ํค๋ํ์ผ
1. IMAGE_DOS_HEADER
- ๋์ค์์ ํธํ์ฑ์ ์ํด ์กด์ฌํ๋ ๋ถ๋ถ
- ๋์ค ํค๋ ์์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๋ณด๊ฐ ๋ค์ด ์์ง๋ง ์ด ์ ๋ณด ์ค ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง ํญ๋ชฉ 2๊ฐ์ง๋ฅผ
์ ์ธํ๊ณ ๋ ์๋์ฐ์ฆํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ฐ ์ฌ์ฉ๋์ง ์๋๋ค.
- ์ฒซ ๋ฒ์งธ ํญ๋ชฉ ๋์คํค๋๋ฅผ ๋ํ๋ด๋ 'MZ'์ด๋ค.
PE๊ตฌ์กฐ๋ ๋์ค ํค๋๋ก ์์๋๊ธฐ ๋๋ฌธ์ PE๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ผ์ ๋ชจ๋ 'MZ'๋ก ์์๋๋ค.
- ๋ ๋ฒ์งธ ํญ๋ชฉ ๋์คํค๋์ ๋ง์ง๋ง์ ์์นํ ์ ๋ณด๋ก ๋ค์ ํค๋์ธ IMAGE_NT_HEADERS์ ์ต์
์ ๋ณด ์ด๋ค.
์ด ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ NT_HEADER์ ์์น๋ฅผ ์ฐพ์ ๊ฐ ์ ์๋ค
- 4. 2. MS-DOS Stub Program
- ํญ๋ชฉ์๋ ํด๋น ํ๋ก๊ทธ๋จ์ ๋์ค ์ด์์ฒด์ ์์ ์คํํ๋ฉด "This program cannot be run in DOS mode"๋ผ๋
๋ฉ์์ง๋ฅผ ๋์ฐ๊ณ ์ข
๋ฃํ๋๋ก ํ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ์ฝ์
๋๋ค (์์ด๋ ํ์ผ ์คํ์๋ ๋ฌธ์ ๊ฐ ์๋ค.)
- ์ฝ๋์ ๋ฐ์ดํฐ์ ํผํฉ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ํฌ๊ธฐ๊ฐ ์ผ์ ํ์ง ์๋ค
- 5. 3. IMAGE_NT_HEADERS
- ํ๋ก๊ทธ๋จ์ด ์๋์ฐ์ฆ ์์คํ
์์ ๋์ํ๊ธฐ ์ํ ๋ง์ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ค.
1) IMAGE_NT_HEADERS ๊ตฌ์ฑ
- Signature, IMAGE_FILE_HEADER, IMAGE_OPTIONAL_HEADER๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
2) File Header์ ์์์ ํ์ธ
- IMAGE_DOS_HEADER์ offset to New EXE Header ํ์ธ
tip, ์๋์ฐ์ฆ ์คํํ์ผ์ ํ๋จํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ
-> ํด๋น ํ์ผ์ ๋ฐ์ด๋๋ฆฌ ์ ๋ณด์์ 'MZ'๋ก ์์ํ๊ณ 'PE'๋ฌธ์์ด์ด ์๋์ง ํ์ธ
- 6. 3-1. Signature
- PEํค๋์ ์์์ ์๋ฏธํ๋ 'PE'๋ฌธ์์ด๋ก ์์ํ๋ค
3-2. IMAGE_FILE_HEADER
- ํ์ผ์ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค
- ํด๋น ํ์ผ์ ํ๊น์ด ๋๋ ์์คํ
์ ์ ๋ณด, ์น์
์ ๊ฐ์, ์์ฑ ๋ ์ง,
IMAGE_OPTIONAL_HEADER์ ํฌ๊ธฐ, ํด๋น ํ์ผ์ ํน์ง ๊ฐ์ง
> Machine : ํ๊น ์์คํ
์ ํ์
> NumberOfSections : ์น์
์ ๊ฐ์
> TimeDateStamp : ํ์ผ์ด ์์ฑ๋ ์๊ฐ๊ณผ ๋ ์ง
> PointerToSymbolTable : ์ฌ๋ณผ ํ
์ด๋ธ์ ํ์ผ ์คํ์
> NumberOfSymbols : ์ฌ๋ณผ ํ
์ด๋ธ์ ์ํธ๋ฆฌ ๊ฐ์
> SizeOfOptionalHeader : optionalheader์ ํฌ๊ธฐ
> Characteristics : ํ์ผ ์์ฑ๊ด๋ จ ํ๋๊ทธ
- 8. 2) ํ์ผ ์คํ์
, RVA, VA
PE๊ตฌ์กฐ์์ ํน์ ์์น๋ฅผ ๋ํ๋ผ ๋ ํ์ผ ์คํ์
, RVA, VA 3๊ฐ์ง ๊ฐ์ ์ฌ์ฉํ๋ค.
- ํ์ผ ์คํ์
: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ด๋๋ฆฌ ํ์ผ์์์ ๊ฐ์ ํ์ผ ์คํ์
์ ์ฌ์ฉํ๋ค.
- RVA : ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ จ๋ ์์น๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ RVA๋ฅผ ์ฌ์ฉํ๋ค.
- VA : ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ ์์ ํ ๋ก๋๋ ์ํ์ ์์น๊ฐ์ ๋ํ๋ด๊ธฐ ์ํด์๋ VA๋ฅผ ์ฌ์ฉํ๋ค.
โ ํ์ผ ์คํ์
(File Offset)
๏ผ ํ์ผ์ ์์น๊ฐ์ ๋งํ๋ค
๏ผ ํ์ผ์ ์ฒซ ๋ถ๋ถ์ 0์ผ๋ก ์์ํด ํ ๋ฐ์ดํธ(byte)๋จ์๋ก 1์ฉ ์ฆ๊ฐ
๏ผ ํ์ผ ์คํ์
์ ๋ง์ง๋ง ๊ฐ์ ํ์ผ์ฌ์ด์ฆ - 1 ์ด๋ค.
ํ์ผ ์คํ์
์ ์์์ด 0๋ถํฐ์ด๊ธฐ ๋๋ฌธ์ ํ์ผ ์ฌ์ด์ฆ - 1 ๊ณผ ๊ฐ์
๏ผ ํ์ผ ์คํ์
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ํ์ผ๋ด์ ์์น๋ฅผ ๋ํ๋ด๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ฉฐ
PEview ๋ฉ๋ด ์ค File Offset ํญ๋ชฉ์ ํด๋ฆญํ๋ฉด ํ์ผ ์คํ์
ํํ๋ก PE๊ตฌ์กฐ์ ์์น์ ๋ณด๊ฐ ํํ๋จ
โ RVA (Relative Virtual Address)
๏ผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ฃผ์ ๊ฐ์ ๋งํ๋ค
๏ผ RVA๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์ํ์์ ์๋ ์์น๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ
๏ผ RVA๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ๋ ์ ํํ ์ฃผ์ ๊ฐ์ ๋ํ๋ด์ง๋ ์๋ค
๏ผ RVA๋ ํด๋น ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ๋ ์์ ์ง์ ๋ถํฐ์ ์คํ์
์ ํํํ๊ธฐ ์ํด ์ฌ์ฉ
๏ผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์์ ์์น๋ถํฐ RVA๊ฐ ๋งํผ ๋จ์ด์ง ๊ณณ์ ๊ฐ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค.
๏ผ ํด๋น ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ๊ณต๊ฐ์ ๋ก๋ ๋์ ๋ ๊ณ ์ ๋ ๊ฐ์ ์ฌ์ฉํ๋ฉด ํด๋น ๊ฐ์
๋ชจ๋ ์์ ํด์ฃผ์ด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค
๏ผ RVA๊ฐ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ๋ก๋ ๋์ด๋ ์๊ด์์ด ํ๋ก๊ทธ๋จ์ด ๋ก๋ ๋ ์ฃผ์
(ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฃผ์) + RVA๋ก ํด๋น ๋ฐ์ดํฐ๊ฐ ์๋ ์์น๋ฅผ ์ ํํ ์ฐพ์๊ฐ ์ ์๋ค
๏ผ ํ์ผ ์คํ์
๊ณผ RVA์ ์ฐจ์ด
- ํ์ผ ์คํ์
: ํ์ผ ์ํ์ ์์ ์์น์์ ์คํ์
๋งํผ ๋จ์ด์ง ๊ณณ์์ ์ํ๋ ๋ฐ์ดํฐ ์ฐพ์ ์ ์๋ค
- RVA : ํด๋น ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์์ ์์น๋ถํฐ RVA๊ฐ ๋งํผ ๋จ์ด์ง ๊ณณ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค
๏ผ ํด๋น ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ๋ ๋๋ ํ์ผ ํํ ๊ทธ๋๋ก ๋ก๋๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ํ์์๋
ํ์ผ ์คํ์
๊ฐ์ ์ฌ์ฉํด์๋ ์ํ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ณ RVA๊ฐ์ ํตํด์๋ง ์ ๊ทผํ๋ค
โ VA (Virtual Address)
๏ผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ์ ์ฃผ์ ๊ฐ์ ๋งํ๋ค.
๏ผ VA๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ๋ํ๋ธ๋ค๋ ๊ฒ์ RVA์ ๊ฐ๋ค
๏ผ ์ฐจ์ด์ ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ ์ ๋ ์ฃผ์๊ฐ์ ๋ํ๋ธ๋ค๋ ์ ์ด๋ค
๏ผ ํด๋น ํ๋ก๊ทธ๋จ์ด ์ง์ ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ก๋๋ ์ํ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฒด ์ฃผ์๊ฐ์ ๋ํ๋ธ๋ค
- 9. 3) ์ต์
๏ผMagic : ํ์ผ์ ์ํ๋ฅผ ํ์ธ ํ ์ ์๋ ์ ์๊ฐ.
32๋นํธ PEํ์ผ 0x10B, 64๋นํธ PEํ์ผ 0x20B, ๋กฑ ํ์ผ 0x107๋ก ํํ๋๋ค.
๏ผ SizeOfCode : ํ์ผ ๋ด์ ์น์
์ฌ์ด์ฆ์ ํฉ
๏ผ AddressOfEntryPoint : ํ๋ก๊ทธ๋จ์ ์์์์น๋ก RVA๋ก ํํ๋๋ค.
๋ก๋๋ ํด๋น ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ ํ๋ก์ธ์ค๋ฅผ ๋์ํ๊ธฐ ์ํด ํด๋น ์์น์ ๋ช
๋ น์ด๋ฅผ ์ํํ๋ค.
์
์ฑ์ฝ๋์ ๊ฒฝ์ฐ ์
์ฑ์ฝ๋๋ฅผ ์ํํ๊ธฐ ์ํด ํด๋น ํญ๋ชฉ์ ๊ฐ์ ์์ ์ ๋ช
๋ น์ด ์์น๋ก ๋ณ๊ฒฝํ๋ค.
๏ผ BaseOfCode : ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์ฝ๋์น์
์ ์์ ์์น, RVA๋ก ํ์
๏ผ BaseOfData : ๋ฉ๋ชจ๋ฆฌ ์ํ์์ ๋ฐ์ดํฐ ์น์
์ ์์ ์์น, RVA๋ก ํ์
๏ผ ImageBase : ํด๋น ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๊ธฐ ์ํ๋ ์์น.
exe ํ์ผ์ 0x00400000, dllํ์ผ์ 0x1000000์ด ์ผ๋ฐ์ ์ธ ์์น์ด๋ค.
Exe์ ๊ฒฝ์ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ํ๋์ ํ๋ก์ธ์ค๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ง์ ๋ ์์น๋ก ๋ก๋๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
ํ์ง๋ง dll์ ๊ฒฝ์ฐ์๋ ํ๋์ exeํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ dll์ด ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๊ธฐ ๋๋ฌธ์
์ง์ ๋ ์์น์ ๋ก๋๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ๋ฐ์ํ๋ค.
ImageBase์ ์ง์ ๋ ์์น๋ก ํ๋ก๊ทธ๋จ์ด ๋ก๋๋๋ฉด ImageBase + RVA๋ก VA๋ฅผ ๊ตฌํ ์ ์๋ค.
๏ผ SectionAlignment : ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋๋๋ ์น์
์ ํฌ๊ธฐ ๋จ์. FileAlignment๋ณด๋ค๋ ๊ฐ๊ฑฐ๋ ์ปค์ผ ํ๋ค.
๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์น์
์ ํฌ๊ธฐ๋ ๋ฐ๋์ SectionAlignment์ ๋ฐฐ์๊ฐ ๋์ด์ผ ํ๋ค.
ex> ์น์
์ ์ฝ๋ ํฌ๊ธฐ๊ฐ 0x900์ด๊ณ SectionAlignment์ ๊ฐ์ 0x1000์ด๋ฉด ์น์
์ ํฌ๊ธฐ๋ 0x1000์ด ๋๋ค.
๏ผ FileAlignment : ํ์ผ ์ํ์์ ์น์
ํฌ๊ธฐ ๋จ์.
512์ 64K ์ฌ์ด์ 2์ n์น์ ํด๋น ํ๋ ๊ฐ์ด์ด์ผ ํ๋ค.
ํ์ผ ๋จ์์ ์น์
์ ํฌ๊ธฐ๋ FileAlignment์ ๋ฐฐ์๊ฐ ๋์ด์ผ ํ๋ค.
ํ์ผ์ ๊ฒฝ์ฐ๋ ์น์
์ ์ค์ ํฌ๊ธฐ๊ฐ 0x201์ด๋๋ผ๋ FileAlignment์ ๊ฐ์ด
0x200์ด๋ฉด 0x400์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค.
๏ผ SizeOfImage : ๋ฉ๋ชจ๋ฆฌ ์ํ์์ ์ด๋ฏธ์ง์ ํฌ๊ธฐ
๏ผ SizeOfHeaders : FileAlignment์ ๋ง์ถฐ์ง ์ ์ฒด ํค๋์ ํฌ๊ธฐ
๏ผ CheckSum : ํ์ผ์ ์ฒดํฌ์ฌ ๊ฐ์ผ๋ก ๋ชจ๋ ๋๋ผ์ด๋ฒ ํ์ผ ๋ฐ ๋ถํ
์์ ๋ก๋๋๋ ์ผ๋ถ DLL ํ์ผ์
์ฒดํฌ์ฌ ๊ฐ์ด ํญ๋ชฉ์ ๊ฐ๊ณผ ๊ฐ์์ผ ๋ก๋๋๋ค. ํน์ ํ๋ก๊ทธ๋จ์์๋ผ๋ ์ฒดํฌ์ฌ ๊ฐ์ ํ์ธํด
ํด๋น ํ์ผ์ ๋ณ์กฐ ์ ๋ฌด๋ฅผ ํ๋จํ๊ธฐ๋ ํ๋ค.
๏ผ Subsystem : ํ๋ก๊ทธ๋จ์ด ๋์ํ๊ธฐ ์ํ subsystem์ ๋ํ๋ด๋ ํญ๋ชฉ์ผ๋ก ํด๋น ํญ๋ชฉ์ ํตํด ํ์ผ์ด
๋๋ผ์ด๋ฒ ํ์ผ์ธ์ง ๊ตฌ๋ถํ ์ ์๋ค.
IMAGE_SUBSYSTEM_NATIVE(1)๊ฐ์ ๊ฐ์ง ๊ฒฝ์ฐ ๋๋ผ์ด๋ฒ ํ์ผ์ด๋ค.
๏ผ NumberOfRvaAndSize : IMAGE_DATA_DIRECTORY์ ๊ฐ์๋ฅผ ๋ํ๋ธ๋ค.
=> ํ์ผ ์คํ์
๊ณผ RVA, VA๋ ํ๋ก๊ทธ๋จ์ ํน์ ์์น๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋์ง๋ง,
ํ์ผ ์ํ์์๋ ํ์ผ ์คํ์
์ ์ฌ์ฉํ๊ณ , ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์์ ์๋์ ์์น๋ฅผ ์๊ธฐ ์ํด์๋ RVA,
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ ์ฃผ์๋ VA๋ฅผ ์ฌ์ฉ ํ๋ค.
- 10. 4. IMAGE_DATA_DIRECTORY์ ์์ 2๊ฐ : EXPORT Table / IMPORT Table
๏ผ EXPORT Table
- DLLํ์ผ๊ณผ ๊ฐ์ด ํด๋น ํ์ผ ๋ด๋ถ์ ํจ์๋ฅผ ์ธ๋ถ์ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํ ๋ชฉ์ ์ผ๋ก ์ ์ํ ํจ์์ ๋ฆฌ์คํธ
- ์ธ๋ถ์ ์ ๊ณตํ๋ ํจ์๊ฐ ์์ ๊ฒฝ์ฐ 0๊ฐ์ด ๋๋ค.
๏ผ IMPORT Table
- ํด๋น ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ DLLํ์ผ๊ณผ ํจ์์ ๋ฆฌ์คํธ
- ์ธ๋ถ์์ ์ ๊ณตํ๋ ํจ์๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ 0์ด ๋์ง๋ง ์๋์ฐ์ฆ ์์คํ
ํ์ผ์ ์ ์ธํ
ํ๋ก๊ทธ๋จ์ ์ธ๋ถ ํจ์๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ 0์ด ๋๋ ๊ฒฝ์ฐ๋ ์๋ค.
- 11. 5. IMAGE_SECTION_HEADER.(text,data,rsrc,reloc)
- ํ์ผ์ ์ฌ๋ฌ ๊ตฌ์ฑ์์๋ ๊ฐ๊ฐ ๊ตฌ๋ถ๋์ด ์ ์ฅ๋๋๋ฐ ์ด๋ฌํ ๊ตฌ๋ถ ๋จ์๋ฅผ ์น์
์ด๋ผ ํ๋ค.
- ๊ฐ๊ฐ์ ์น์
์ ์์น ๋ฐ ์ฌ์ด์ฆ๊ฐ ๋ฌ๋ผ์ ์ด๋ฌํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด IMAGE_SECTION_HEADER๋ฅผ ์ฌ์ฉํ๋ค.
1) text
2) data
- 13. ๏ผ Name
- 8๋ฐ์ดํธ ์์คํค ๋ฌธ์์ด๋ก ๊ฐ ์น์
์ ์ด๋ฆ์ด๋ค. ์น์
๋ช
์ ์ง์ ๋ ๊ท์น์ ์๋ค.
- ์ฌ์ฉ์๊ฐ ์ํ๋ ์ด๋ฆ์ผ๋ก ํธ์งํด๋ ํ๋ก๊ทธ๋จ ๋์์๋ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ์ผ๋ฐ์ ์ธ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ์น์
๋ช
์ ์ฌ์ฉํ๋ค.
> ".text" ์ฝ๋ ์น์
> ".data" ์ด๊ธฐํ๋ ๋ฐ์ดํฐ ์ธ์
(์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์์ ๊ฐ์ด ์ปดํ์ผ ๋จ๊ณ์์ ์ด๊ธฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํ๋ค.)
> ".rsrc" ํ๋ก๊ทธ๋จ์ ๋ฆฌ์์ค ๊ด๋ จ ์ธ์
๏ผ VirtualSize
- ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ์ํ์์์ ์น์
์ ํฌ๊ธฐ
๏ผ VirtualAddress
- ์น์
์ ์ฒซ ๋ฐ์ดํธ์ RVA (์์์ ์ ์๋ฏธํ๋ค)
๏ผ SizeOfRawData
- ํ์ผ ์ํ์์์ ์น์
ํฌ๊ธฐ
๏ผ PointerToRawData Charateristics
- ํ์ผ ์ํ์์ ์น์
์ ์ฒซ ๋ฐ์ดํธ์ ํ์ผ ์คํ์
- ์น์
์ ํน์ง์ ๋ํ๋ด๋ ํ๋๊ทธ
> IMAGE_SCN_CNT_CODE(0x00000020) : ์น์
์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ํฌํจ๋๋ค.
> IMAGE_SCN_MEM_SHARED(0x10000000) : ๋ฉ๋ชจ๋ฆฌ์์ ๊ณต์ ๊ฐ๋ฅ
> IMAGE_SCN_MEM_EXECUTE(0x20000000) : ์คํ ๊ฐ๋ฅํ ์น์
> ์ฝ๋๊ฐ ๋ค์ด ์๋ ์น์
์ ํด๋น ํ๋๊ทธ๋ฅผ ๊ฐ์ง๋ค. ๋ฐ์ด๋ฌ์ค ์ฝ๋๊ฐ ์ฝ์
๋ ์น์
์ ํด๋น ํ๋๊ทธ๋ฅผ
์ถ๊ฐํด์ ์์ ์ ์ฝ๋๊ฐ ์คํ๋๋๋ก ํ๋ค.
> IMAGE_SCN_MEM_READ(0x40000000) : ์น์
์ ์ฝ์ ์ ์๋ ํ๋๊ทธ๋ก ์น์
๋ด์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ
์ฝ์ด์ ์ฌ์ฉํ๋ค
> IMAGE_SCN_MEM_WRITE(0x80000000) : ์น์
์ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ํ๋๊ทธ๋ก ํด๋น ํ๋๊ทธ๋ฅผ ๊ฐ์ง ์น์
์
๋ฉ๋ชจ๋ฆฌ ์์์ ๋ฐ์ดํฐ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค.
- 14. 6. BOUND IMPORT Directory Table(IDT)
๏ผ IDT๋ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ DLL์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค
๏ผ 1๊ฐ์ IDT๋ 1๊ฐ์ DLL์ ๊ดํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค
๏ผ IDT์ ๊ตฌ์กฐ์๋ ์ํฌํธํ DLL์ ์ด๋ฆ(Name RVA)๊ณผ ํด๋น DLL์์ ์ฌ์ฉํ ํจ์์
๋ชฉ๋ก(Import Name Table RVA)์ด ๋ํ๋ ์๋ค
๏ผ ๋ชฉ๋ก์ ์ฌ์ฉํด ์ด์์ฒด์ ์ ๋ก๋๋ ํด๋น ํ๋ก๊ทธ๋จ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ํ ๋ ํ์ํ
DLL์ ๋ฆฌ์คํธ๋ฅผ ์ฐพ์์ ์ฐ๊ฒฐํ๋ค
๏ผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋์ง ์์ ๊ฒฝ์ฐ์๋ ํด๋น DLL์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ค
๏ผ ๊ทธ ํ ํ๋ก๊ทธ๋จ์ ํด๋น ํจ์๋ฅผ ํธ์ถํด์ ์ฌ์ฉํ๋ค
- 15. 7. BOUND IMPORT DLL Names
- Import Name Table์๋ ๊ฐ๊ฐ์ DLL์์ ์ํฌํธํ๋ ํจ์์ ๋ชฉ๋ก์ด ๋ํ๋๋ค.
- ์ํฌํธ๋ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํด์๋ ํจ์์ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ordinal number ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- DLL์ ํจ์๋ ๊ฐ ํจ์๋ง๋ค ์ด๋ฆ๊ณผ ordinal number๋ฅผ ๊ฐ์ง๋ค.
ํ์ง๋ง ํน์ ์๋์ฐ์ฆ ํจ์๋ ํจ์์ด๋ฆ์ ๊ณต๊ฐ๋์ด ์์ง ์๊ณ ordinal number๋ง ๊ณต๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ ordinal number๋ฅผ ์ฌ์ฉํด์ ํด๋น ํจ์๋ฅผ ํธ์ถํ๋ค.
๏ผ Hint/Name RVA โ ํด๋น ํจ์์ ์ด๋ฆ์ ํตํด ํด๋น ํจ์๋ฅผ ํธ์ถ
๏ผ Ordinal โ ํจ์์ ๋ฒํธ๋ง ์์ ๊ฒฝ์ฐ๋ ํด๋น ๋ฒํธ๋ก ํจ์๋ฅผ ํธ์ถ