статья незакончена благо был утерян доступ к спарку. ну и хуй с ним



  Краткое описание ассемблера было в поршлом номере. Теперь пару слов пора
  сказать о выделении фриспейса в коде, для размещения нашего злобного кода.
  Посмотрим простой дамп:

 $ /usr/ccs/bin/dis -F getdents64 /kernel/genunix
                ****   DISASSEMBLER  ****


 disassembly for /kernel/genunix

 section .text
 getdents64()
        34b28:  9d e3 bf 68        save         %sp, -0x98, %sp
        34b2c:  80 a6 a0 18        cmp          %i2, 0x18
        34b30:  1a 80 00 06        bgeu         0x34b48

        # nop и на в Африке nop  +4
        34b34:  01 00 00 00        nop

        # та же тема, call 0 естессна нахуй не надо )   +8
        34b38:  40 00 00 00        call         0x34b38

        34b3c:  90 10 20 16        mov          0x16, %o0
        34b40:  81 c7 e0 08        ret
        34b44:  91 e8 00 08        restore      %g0, %o0, %o0

        # 0x18 + 0x1a = 0x32
        34b48:  40 00 00 00        call         0x34b48

        # это вырезаем +12
        34b4c:  90 10 00 18        mov          %i0, %o0

        # меняем на   orcc %g0, %i0, %l4
        34b50:  a8 90 00 08        orcc         %g0, %o0, %l4
        34b54:  32 80 00 06        bne,a        0x34b6c

        # вырезаем нах??
        34b58:  e6 02 20 0c        ld           [%o0 + 0xc], %l3

        # call 0  +16
        34b5c:  40 00 00 00        call         0x34b5c

        34b60:  90 10 20 09        mov          0x9, %o0
        34b64:  81 c7 e0 08        ret
        34b68:  91 e8 00 08        restore      %g0, %o0, %o0

        # 0x14 + 0x32
        34b6c:  c4 04 e0 2c        ld           [%l3 + 0x2c], %g2
        34b70:  80 a0 a0 02        cmp          %g2, 0x2

        34b74:  02 80 00 08        be           0x34b94

        34b78:  05 00 00 40        sethi        %hi(0x10000), %g2
        34b7c:  40 00 00 00        call         0x34b7c
        34b80:  90 10 00 18        mov          %i0, %o0

        34b84:  40 00 00 00        call         0x34b84

        34b88:  90 10 20 14        mov          0x14, %o0
        34b8c:  81 c7 e0 08        ret
        34b90:  91 e8 00 08        restore      %g0, %o0, %o0

        # 0x20 + 0x02
        34b94:  84 a0 80 1a        subcc        %g2, %i2, %g2

        # 2 инструкции нахуй
        34b98:  86 60 00 00        subx         %g0, %g0, %g3
        34b9c:  84 08 c0 02        and          %g3, %g2, %g2

        # меняем на add %g0, %i2, %l5
        34ba0:  aa 00 80 1a        add          %g2, %i2, %l5
        34ba4:  84 07 bf f8        add          %fp, -0x8, %g2

        34ba8:  f2 27 bf f8        st           %i1, [%fp - 0x8]
        34bac:  c4 27 bf d0        st           %g2, [%fp - 0x30]
        34bb0:  84 10 20 01        mov          0x1, %g2
        34bb4:  ea 27 bf fc        st           %l5, [%fp - 0x4]
        34bb8:  c4 27 bf d4        st           %g2, [%fp - 0x2c]
        34bbc:  84 10 20 00        clr          %g2
        34bc0:  e0 02 20 10        ld           [%o0 + 0x10], %l0
        34bc4:  e2 02 20 14        ld           [%o0 + 0x14], %l1
        34bc8:  90 10 00 13        mov          %l3, %o0
        34bcc:  e0 27 bf d8        st           %l0, [%fp - 0x28]
        34bd0:  e2 27 bf dc        st           %l1, [%fp - 0x24]
        34bd4:  c0 27 bf e0        clr          [%fp - 0x20]
        34bd8:  ea 27 bf f0        st           %l5, [%fp - 0x10]
        34bdc:  c4 37 bf e4        sth          %g2, [%fp - 0x1c]
        34be0:  c4 04 e0 14        ld           [%l3 + 0x14], %g2
        34be4:  e0 00 a0 58        ld           [%g2 + 0x58], %l0
        34be8:  9f c4 00 00        jmpl         %l0, %o7
        34bec:  92 10 20 00        clr          %o1
        34bf0:  c4 04 e0 14        ld           [%l3 + 0x14], %g2
        34bf4:  90 10 00 13        mov          %l3, %o0
        34bf8:  92 07 bf d0        add          %fp, -0x30, %o1
        34bfc:  96 07 bf cc        add          %fp, -0x34, %o3
        34c00:  e0 00 a0 40        ld           [%g2 + 0x40], %l0
        34c04:  9f c4 00 00        jmpl         %l0, %o7
        34c08:  d4 05 20 18        ld           [%l4 + 0x18], %o2
        34c0c:  c4 04 e0 14        ld           [%l3 + 0x14], %g2
        34c10:  a2 10 00 08        mov          %o0, %l1
        34c14:  90 10 00 13        mov          %l3, %o0
        34c18:  e0 00 a0 5c        ld           [%g2 + 0x5c], %l0
        34c1c:  9f c4 00 00        jmpl         %l0, %o7
        34c20:  92 10 20 00        clr          %o1
        34c24:  80 a4 60 00        cmp          %l1, 0x0
        34c28:  22 80 00 08        be,a         0x34c48

        34c2c:  c4 07 bf f0        ld           [%fp - 0x10], %g2
        34c30:  40 00 00 00        call         0x34c30
        34c34:  90 10 00 18        mov          %i0, %o0
        34c38:  40 00 00 00        call         0x34c38
        34c3c:  90 10 00 11        mov          %l1, %o0
        34c40:  81 c7 e0 08        ret
        34c44:  91 e8 00 08        restore      %g0, %o0, %o0

        34c48:  e2 07 bf dc        ld           [%fp - 0x24], %l1
        34c4c:  a6 25 40 02        sub          %l5, %g2, %l3
        34c50:  e0 07 bf d8        ld           [%fp - 0x28], %l0
        34c54:  90 10 00 18        mov          %i0, %o0
        34c58:  e0 25 20 10        st           %l0, [%l4 + 0x10]
        34c5c:  40 00 00 00        call         0x34c5c
        34c60:  e2 25 20 14        st           %l1, [%l4 + 0x14]

        34c64:  81 c7 e0 08        ret
        34c68:  91 e8 00 13        restore      %g0, %l3, %o0

 $


   Словом можно много чего повырезать, главное не забыть об обновлении
   оффсетов если имеются джампы.

   Вот список того, что можно резать сразу:

   0x40 0x00 0x00 0x00
   0x01 0x00 0x00 0x00


   Иногда попадается такой вот ахтунг:
        104f4:  90 10 00 10        mov          %l0, %o0
        104f8:  92 10 00 11        mov          %l1, %o1