~ hints ~

     Тут  будут  собраны  всякие небольшие фишки, которые не тянут на отдельную
  статью, но тем не менее интересны.

  [0] detect OS via ELF

     С  помощью ELF бинарников можно определить версию оси. В самом начале elf-
  заголовка идёт e_ident[]. Это массив из 16 байт, вот они :

    e_ident[0] = 0x7f
    e_indet[1] = 'E'
    e_ident[2] = 'L'
    e_ident[3] = 'F'
    e_ident[4] =    класс архитектуры (1: 32-bit arch, 2: 64-bit arch)
    e_ident[5] =    формат данных (1 для Little endian, 2 для Big endian)
    e_ident[7] =    тип операционной системы

            SYSV    0x00
            HPUX    0x01
          NetBSD    0x02
           Linux    0x03
            HURD    0x04
          86Open    0x05
         Solaris    0x06
        Monterey    0x07
            IRIX    0x08
         FreeBSD    0x09
      Tru64 UNIX    0x0a
  Novell Modesto    0x0b
         OpenBSD    0x0c

      standalone    0xff

    ...


  [1] ip address masking

     Ковыряли  червяка  одного  и нашли интересную фишку - ip адреса в hex-виде
  нормально воспринимаются консолью например:

    $ ping 0x7f000001  <- равносильно -> ping 127.0.0.1

  Вот такой html-код тоже работает (из тела червя):
  <iframe src=http://0xcbdf9f69/adsense.php width=1 height=1 style="display:none">

  0xcbdf9f60 == 203.223.159.105

  Выглядит весьма элитно так писать адреса =)


  [2] direct jump

     Супер  тема,  не  знаю  точно,  наверное  эта техника уже давно каким-нить
  вирмейкером описана, но... позиционно независимый jump :

    push $addr
    ret

     Всего  6 байт и мы попадаем куда надо, при этом $addr из стека вынимается.
  Для сравнения следущий стандартный пример:

    push $addr
    jmp *(%esp)

     Занимает  7  байт  и  в  стеке остаётся адрес прыжка. Так что push-ret это
  весьма удобная техника.