แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ GNU Binutils 2.34

แžŽแŸ‚แž“แžถแŸ† แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™แžŸแŸ†แžŽแžปแŸ†แžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’ GNU Binutils 2.34แžŠแŸ‚แž›แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแžผแž…แž‡แžถ GNU linker, GNU assembler, nm, objdump, strings, strip แŸ”

ะ’ แžแŸ’แž˜แžธ แž€แŸ†แžŽแŸ‚แŸ”:

  • แž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแŸแžœแžถแž€แž˜แŸ’แž˜ แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸแžŠแŸ‚แž›แž‡แžถแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ HTTP แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž•แŸ’แžแž›แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸ ELF/DWARF แž“แžทแž„แž€แžผแžŠแž”แŸ’แžšแž—แž–แŸ” แž“แŸ…แž–แŸแž›แž”แž„แŸ’แž€แžพแž Binutils แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžš debuginfod แžงแž”แž€แžšแžŽแŸ readelf แž“แžทแž„ objdump แžขแžถแž…แž—แŸ’แž‡แžถแž”แŸ‹แž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ debuginfod แžŠแžพแž˜แŸ’แž”แžธแž‘แžถแž‰แž™แž€แž–แŸแžแŸŒแž˜แžถแž“แž”แŸ†แž”แžถแžแŸ‹แž€แŸ†แž แžปแžŸแžŠแŸ‚แž›แž”แžถแžแŸ‹แžขแŸ†แž–แžธแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹ แžŸแž“แŸ’แž“แžทแž”แžถแž binutils แž‡แžถแž˜แžฝแž™ debuginfod แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แž‚แŸ’แžšแžธแž”แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แžขแŸ’แž“แž€แž‚แžฝแžšแžแŸ‚แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‡แž˜แŸ’แžšแžพแžŸ "--with-debuginfod" แž“แžทแž„แž•แŸ’แžแž›แŸ‹แž“แžผแžœแž€แžถแžšแž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แž”แžŽแŸ’แžŽแžถแž›แŸแž™ libdebuginfod แžŠแŸ‚แž›แž”แžถแž“แž•แŸ’แž‚แžแŸ‹แž•แŸ’แž‚แž„แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แžงแž”แž€แžšแžŽแŸ elfutils;
  • แž‡แž˜แŸ’แžšแžพแžŸ "--visualize-jumps" แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ… disassembler (objdump โ€”disassemble) แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแž€แŸ’แžšแžถแž แŸ’แžœแžทแž€ ascii แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž˜แžพแž›แžƒแžพแž‰แž“แŸƒแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš แžŠแŸ‚แž›แž€แŸ†แžŽแžแŸ‹แž™แŸ‰แžถแž„แž…แŸ’แž”แžถแžŸแŸ‹แž“แžผแžœแž‘แŸ†แž“แžถแž€แŸ‹แž‘แŸ†แž“แž„แžšแžœแžถแž„แž…แŸ†แžŽแžปแž…แž‚แŸ„แž›แžŠแŸ… แž“แžทแž„แž”แŸ’แžšแž—แž–แž›แŸ„แžแž“แŸ…แž€แŸ’แž“แžปแž„แž…แžšแž“แŸ’แžแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแŸ” แž€แžถแžšแž˜แžพแž›แžƒแžพแž‰แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžแžถแž”แžแŸ’แž™แž€แž˜แŸ’แž˜ x86, x86_64 แž“แžทแž„ ARM แŸ”

    c6: | | \โ€”โ€”โ€”โ€”-> be 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: | | be 00 00 00 00 mov $0x0,%esi
    eb: | \\โ€”โ€” eb de jmp cb
    ed: \โ€”โ€”โ€”โ€”โ€”โ€”-> 48 8b 16 mov (%rsi),%rdx

  • แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžš ELF แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžแžถแž”แžแŸ’แž™แž€แž˜แŸ’แž˜ Z80 แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แžงแž”แž€แžšแžŽแŸแžŠแŸ†แžกแžพแž„ แž“แžทแž„แžแŸ†แžŽแž—แŸ’แž‡แžถแž”แŸ‹ (แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ†แžŽแžพแžšแž€แžถแžš Zilog Z180 แž“แžทแž„ Zilog eZ80 แž“แŸ…แž€แŸ’แž“แžปแž„แžšแž”แŸ€แž” ADL แž“แžทแž„ Z80 แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แžถแŸ†แž‘แŸ’แžš);
  • แž‡แž˜แŸ’แžšแžพแžŸ "--output" แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ "ar" แžŠแžพแž˜แŸ’แž”แžธแž”แž‰แŸ’แž‡แžถแž€แŸ‹แžแžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแŸ’แžšแž„แŸ‹แž…แŸแž‰แž–แžธแž”แŸแžŽแŸ’แžŽแžŸแžถแžšแŸ”
  • แž‡แž˜แŸ’แžšแžพแžŸ "--keep-section" แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แžงแž”แž€แžšแžŽแŸแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ "objcopy" แž“แžทแž„ "strip" แžŠแžพแž˜แŸ’แž”แžธแž€แžถแžšแž–แžถแžšแž•แŸ’แž“แŸ‚แž€แžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž–แžธแž€แžถแžšแž›แžปแž”แŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹