- ์ถ๊ฐ๋ ์๋น์ค ์ง์
๋๋ฒ๊ทธ ์ ๋ณด ๋ ELF/DWARF ๋๋ฒ๊น ์ ๋ณด ๋ฐ ์์ค ์ฝ๋๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ HTTP ์๋ฒ์ ๋๋ค. debuginfod ์ง์์ ์ฌ์ฉํ์ฌ Binutils๋ฅผ ๋น๋ํ ๋ readelf ๋ฐ objdump ์ ํธ๋ฆฌํฐ๋ debuginfod ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ์ฒ๋ฆฌ ์ค์ธ ํ์ผ์ ๋ํด ๋๋ฝ๋ ๋๋ฒ๊น ์ ๋ณด๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์ ์ํ์กฐ๋ฆฝ ๊ตฌ์ฑ ์คํฌ๋ฆฝํธ์์ debuginfod๊ฐ ํฌํจ๋ binutils๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "--with-debuginfod" ์ต์ ์ ์ง์ ํ๊ณ ํคํธ์ ์ ๊ณต๋ libdebuginfod ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.์ํธํธ ; - "--visualize-jumps" ์ต์
์ด ๋์ค์ด์
๋ธ๋ฌ(objdump โdisassemble)์ ์ถ๊ฐ๋์ด ์ ํ ์๊ฐํ๊ฐ ํฌํจ๋ ASCII ๊ทธ๋ํฝ์ ์์ฑํฉ๋๋ค. ์ด๋ ๋ช
๋ น ์คํธ๋ฆผ์์ ๋์ ์ง์ ๊ณผ ์ ํ ์์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช
ํํ๊ฒ ์ ์ํฉ๋๋ค. ์๊ฐํ๋ x86, x86_64 ๋ฐ ARM ์ํคํ
์ฒ์์ ์๋ํฉ๋๋ค.
c6: | | \โโโ-> 00 00 00 00 mov $0x0,%esi
CB: | | /โ-> 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # d2
d2: | | | 31 c0 xor %eax,%eax
d4: | | | //โ e8 00 00 00 00 callq d9
d9: | | | \-> bf 02 00 00 00 mov $0x2,%edi
๋: | +โโโโ|โโ e8 00 00 00 00 callq e3
e3: | \โโโโ|โ-> 48 89 da mov %rbx,%rdx
e6: | | 00 00 00 00 mov $0x0,%esi
์ก: | \โโ eb de jmp cb
์๋: \โโโโโโ-> 48 8b 16 mov (%rsi),%rdx - Z80 ์ํคํ ์ฒ์ ๋ํ ELF ํ์ผ ์์ฑ ์ง์์ด ์ด์ ๋ธ๋ฌ ๋ฐ ๋ง์ปค์ ์ถ๊ฐ๋์์ต๋๋ค(ADL ๋ฐ Z180 ๋ชจ๋์ Zilog Z80 ๋ฐ Zilog eZ80 ํ๋ก์ธ์๊ฐ ์ง์๋จ).
- ์์นด์ด๋ธ์์ ์ถ์ถํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ๊ธฐ ์ํด "--output" ์ต์ ์ด "ar" ์ ํธ๋ฆฌํฐ์ ์ถ๊ฐ๋์์ต๋๋ค.
- ์ง์ ๋ ์น์ ์ด ์ญ์ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด "--keep-section" ์ต์ ์ด "objcopy" ๋ฐ "strip" ์ ํธ๋ฆฌํฐ์ ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru