Problem 1:
๊ธฐ์ ์ฒด์์ ์ค๊ณํ Arm ํ๋ก์ธ์ ๊ธฐ๋ฐ์ ์๋ฒ ๋๋ ์์คํ ์ ์๋๋ก์ด๋ ์คํผ๋ ์ดํ ์์คํ ํฌํ ํ๋ ค ํฉ๋๋ค.
์์คํ ์ ์ผ์ฑ์ ์์์ ์ค๊ณํ Arm ํ๋ก์ธ์ ์ฝ์ด ๊ธฐ๋ฐ์ Exynos ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์คํ ์ ํ๋์จ์ด๋ฅผ ์ด๊ธฐํํ๊ณ ๋ฆฌ๋ ์ค ๊ธฐ๋ฐ์ ์๋๋ก์ด๋ ์ปค๋์ ๋ก๋ฉํ๋ ๋ถํธ๋ก๋๋ u-boot๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ถํ ๊ณผ์ ์์ ์์คํ ์ด ์์ฃผ ๋ฉ์ถ๋ ํ์์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ์ ์์ธ์ ๋ถ์ํ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.
์์ธ ๋ถ์
์์คํ ์ด ๋ฉ์ถ๋ ํ์์ ๋ถ์ํ๊ธฐ ์ํด, ์ค์ค๋ก์ค์ฝ๋๋ฅผ ์ด์ฉํ ์ ์ด ์ ํธ(Reset, Address bus, Data bus, etc.)์ ํํ ๋ถ์๊ณผ ICE (In-Circuit Emulator) ์ฅ๋น๋ฅผ ์์คํ ์ ์ฐ๊ฒฐํ ๋ค์ ๋๋ฒ๊ทธ ๋ชจ๋์์ ์ฝ๋ ์คํ ๋ฑ์ ํตํ์ฌ ์์คํ ์ด ๋ฉ์ถ๋ ์์น๋ฅผ ํน์ ํ ์ ์์์ต๋๋ค.
u-boot ์ฝ๋์ lowlevel_init() ํจ์๋ฅผ ์คํํ ํ, ROM ์์ญ์ u-boot ์ฝ๋๋ฅผ DRAM ์์ญ์ผ๋ก ๋ณต ์ฌํ๋ ์ฝ๋ ์คํ ์์ ์์ฃผ ์์คํ ์ด ๋ฉ์ถ๋ ํ์์ด ๋ฐ์ํ๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
**lowlevel_init()** ํจ์๋ ์์คํ ํ๋์จ์ด์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํ๊ณ , ์บ์ ์ฌ์ฉ์ ๋นํ์ฑํ ํ๋ ๊ธฐ๋ฅ์ ์ ํํฉ๋๋ค.
์ผ๋ถ ํ๋์จ์ด์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ๊ธฐ ์ ์ ํ๋์จ์ด ์ค์ ๊ฐ์ ์ ๋ ฅํ๊ณ , ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์๋๊ธฐ ๊น์ง ์ผ๋ง๊ฐ์ ๋๊ธฐ ์๊ฐ์ด ํ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ธฐ์ ์ฒด์์ ์ค๊ณํ ์์คํ ์ ๊ฒฝ์ฐ, PCB์ ์ฅ์ฐฉ๋ ํ๋ก์ธ์์ ๋ฉ๋ชจ๋ฆฌ ์์คํ ๊ฐ์ ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ด์ ์ฃผ์ด์ง ์๊ฐ ๋ด์ ์ค์ ๊ฐ์ด ๋ฐ์๋์ง ์๋ ํ์์ด ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ํ๋จ๋์์ต๋๋ค.
lowlevel_init()
copy_codeblock2dram()
๐ก lowlevel_init()์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ธฐํํ๋ คํ๋๋ฐ PCB์ ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ด์ ์ด๊ธฐํ๊ฐ ์๋ ์ํ๋กcopy_codeblock2dram() ์คํ๋์ dram ์ด๊ธฐํ ์ ์ ๋ณต์ฌํด์ ๋ฃ์ผ๋ ค๊ณ ํ๋๊น ๋ป?๋๊ฐ์ ๋ฉ์ถ ๊ทธ๋ฐ ์ํ.
๋ฌธ์ ํด๊ฒฐ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด lowlevel_init() ํจ์์ ํ๋ก๊ทธ๋จ ์ฝ๋ ๋ธ๋ก์ DRAM ์์ญ์ผ๋ก ๋ณต์ฌํ๋ ํจ ์ ์ฌ์ด์ 40ms์ ์ง์ฐ ์๊ฐ์ ์ถ๊ฐํ๊ธฐ๋ก ํ์ต๋๋ค. ์ค์ ํ๋์จ์ด ์์คํ ์ ์ ์ฉํ๊ธฐ ์ ์ ํ ์คํธ ํ๊ฒฝ์ ๋ง๋ค์ด ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊ธฐ๋ฅ์ ๊ฒ์ฆํฉ๋๋ค.
ํ ์คํธ ํ๊ฒฝ์ผ๋ก MDK-ARM ํด์์ ์ ๊ณตํ๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฎฌ๋ ์ดํฐ๋ Arm 7 ํ๋ก์ธ์ ์ฝ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด ํ๋ก์ธ์ ์ฝ์ด์ ๋์ ์๋๋ 60 Mhz ์ด๋ฉฐ, 3 stages pipeline์ ์ฌ์ฉํ๋ฏ๋ก branch ๋ช ๋ น ๋ฑ์ผ๋ก ์ธํ pipeline refill ์ ์๋น๋๋ ์ฌ์ดํด์ ๊ณ ๋ คํฉ๋๋ค.
- ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด instruction set์ ์ด์ฉํ์ฌ ์ง์ฐ ์๊ฐ์ ์ถ๊ฐํ๋ ์ฝ๋๋ฅผ ๋ง๋ค๋๋ก ํฉ๋๋ค.
- ์ฐธ๊ณ ๋ก, Keil MDK uVision์ ์ด์ฉํ ๊ฒฝ์ฐ, ๋๋ฒ๊ทธ ์ธ์ ์์ "registers - internal - states" ํญ๋ชฉ์ ๋ณด๋ฉด ์๋ฎฌ๋ ์ดํฐ ์์์ ์คํํ ์ฌ์ดํด ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
Problem2:
ํ๋ก๊ทธ๋จ์ ์คํ ์ฑ๋ฅ ํฅ์์ ์ํด ROM ์์ญ์ ์คํ ์ฝ๋๋ฅผ RAM ์์ญ์ผ๋ก ๋ณต์ฌํ ๋ค์, ์ ์ด๊ถ์ ๋ณต์ฌํ ์์ญ์ ์ฝ๋๋ก ๋๊ฒจ ์คํ์ ๊ณ์ํ๋๋ก ํฉ๋๋ค.
์ด๋ ๋ง์ ์๋ฒ ๋๋ ์์คํ ์์ ์ฑ๋ฅ ํฅ์์ ์ํด ์ทจํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐ๋ฐ ์ค์ธ ์์คํ ์๋ ์ด ๊ฐ์ ๊ธฐ๋ฅ์ ์ ์ฉํฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
์ค์ ํ๋์จ์ด ์์คํ ์ ๋์ ํ์ฌ ์๋ฎฌ๋ ์ดํฐ ์์์ ๋จผ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋๋ก ํฉ๋๋ค.
- ํ๋ก๊ทธ๋จ์ ROM ์์ญ์ 0x0 ๋ฒ์ง๋ถํฐ ์์ํฉ๋๋ค. ์ฝ๋๊ฐ ๋์์ ์ ๋๋ก ํ ์ ์๋ ์ง๋ฅผ ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ๋ณต์ฌํ ์ฝ๋ ํฌ๊ธฐ๋ฅผ 0x1000 ์ผ๋ก ์ ํํฉ๋๋ค. ์ค์ u-boot์ ์ฝ๋ ํฌ๊ธฐ๋ bss ์์ ์ฃผ์์์ ์ฝ๋ ์์ ์ฃผ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค.
- ์ฝ๋ ๋ธ๋ก์ ๋ณต์ฌํ ์ฃผ์๋ ์๋ฎฌ๋ ์ดํฐ์ RAM ์์ ์ฃผ์์ธ 0x4000_0000 ์ผ๋ก ํฉ๋๋ค. ๊ฒ์ฆ์ด ์๋ฃ๋ ํ, ์ค์ ํ๋์จ์ด์ ์ ์ฉํ ๋๋ ํ๋์จ์ด์ ์ ์ฌ๋ ์ฝ๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
- ์ฝ๋ ๋ธ๋ก์ ๋ณต์ฌํ ํ์๋ ๋ณต์ฌํ RAM ์์ญ์ผ๋ก ์คํ ์์น๋ฅผ ์ฎ๊ฒจ์ ์ฝ๋ ๋ธ๋ก์ ๋ณต์ฌํ๋ ๋ช ๋ น์ ์ด์ด์ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.(self-modifying code)
- ์ฝ๋ ๋ธ๋ก์ ๋ณต์ฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ LDM/STM instructions๋ฅผ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค.
์ฐธ๊ณ 1:
์ฝ๋ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณต์ฌํ ๊ฒ์ ํ์ธํ๊ธฐ ์ํด uVision์ ๋๋ฒ๊ทธ ๋ช ๋ น ์ฐฝ์์ memset ๋ช ๋ น์ผ๋ก ์ฝ๋ ์์ ์ ์ ๋ฏธ๋ฆฌ SRAM ์์ญ์ ํน์ ๊ฐ์ผ๋ก ์ฑ์๋๋ค. ๋๋ ์ข ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ผ๋ก debug ๋ฉ๋ด์์ ini ํ์ผ์ ๋ง๋ค์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
options for target... - debug ๋ฉ๋ด๋ก ์ด๋ํ ๋ค์, ๋ค์๊ณผ ๊ฐ์ด ini ํ์ผ์ ๋ง๋ค์ด ๋ฑ๋กํด ๋ก ๋๋ค.
memset (0x40000000, 0x40001000, 'a') ; 0x4000_0000 - 0x4000_1000 ๋ฒ์๋ฅผ 'a' ๊ฐ์ผ๋ก ์ฑ์ด๋ค. LOAD ex4.axf ; ์ปดํ์ผ ํ ๋ง๋ค์ด์ง ์คํ ํ์ผ ์ด๋ฆ์ด ex4.axf ์ธ ๊ฒฝ์ฐ
์ฐธ๊ณ 2:
์ฝ๋ ๋ธ๋ก์ ๋ณต์ฌํ ํ์ 0x4000_0000 ๋ฒ์ง ์์ญ์ ์ฝ๋๋ฅผ ์คํํ ์๋ ์์ ๊ฒ์ ๋๋ค.
์ด๋ ์๋ฎฌ๋ ์ดํฐ์ SRAM์ด read/write ์์ฑ์ ๊ฐ์ง๋ง execute ์์ฑ์ ๊ฐ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฝ๋์ ์ ์ด๊ถ์ด ์ ํํ ์์น๋ก ์ด๋ํด์ ์คํ ๋๊ธฐ ์ํ์ธ์ง ํ์ธํ๊ธฐ ์ํด ๋๋ฒ๊ทธ ์ธ์ ์ registers ์ฐฝ๊ณผ disassembly ์ฐฝ์์ PC ๊ฐ์ด ์ฒ์ ์๋ํ ์ฃผ์์ ๋ช ๋ น์ ๊ฐ๋ฆฌํค๋ ์ง, ๋ช ๋ น์ด์ ๋ฉ ๋ชจ๋ฆฌ ์ฃผ์๋ ์ ํํ์ง ํ์ธํด์ผ ํฉ๋๋ค. (ํ๋ฉด ์บก์ฒ)๋๋ฒ๊ทธ ๋ช ๋ น์ ์ด์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์์ฑ์ ์คํ ๊ฐ๋ฅ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์, ini ํ์ผ์ ๋ค์ ๋ผ์ธ์ ์ถ๊ฐํฉ๋๋ค.
map 0x40000000, 0x40001000 read write exec
':: Cyber Security ๐ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ARM ์ปดํจํฐ ๊ตฌ์กฐ] delay_loop ๊ตฌํ ๋ฐ ๊ฐ์ ๋จธ์ ํ ์คํธ ๊ตฌํ ๊ณผ์ - ํด๊ฒฐ ๊ณผ์ - ๋์ 1ํธ (0) | 2023.06.12 |
---|
๋๊ธ