GNU Binutils 2.34 ์ถœ์‹œ

๋„์ž… ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ ์ถœ์‹œ GNU Binutils 2.34, ์—ฌ๊ธฐ์—๋Š” GNU ๋ง์ปค, GNU ์–ด์…ˆ๋ธ”๋Ÿฌ, nm, objdump, ๋ฌธ์ž์—ด, ์ŠคํŠธ๋ฆฝ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ะ’ ์ƒˆ๋กœ์šด ๋ฒ„์ „:

  • ์ถ”๊ฐ€๋œ ์„œ๋น„์Šค ์ง€์› ๋””๋ฒ„๊ทธ ์ •๋ณด๋Š” 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€