небольшие непонятки с разработкой шеллкода

Тема в разделе "WASM.UNIX", создана пользователем f0rk, 29 авг 2008.

  1. f0rk

    f0rk New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    18
    собственно, проблема в следующем: хочу разработать шеллкод, который выводить строку на STDOUT И делает exit,
    составил такое вот примерно:
    .text
    .global _start
    _start:
    pushl $0xa
    pushl $0x4141
    xor %eax, %eax
    movb $4, %al
    xor %ebx, %ebx
    movb $1, %bl
    xor %edx, %edx
    movb $0x3, %dl
    xor %ecx, %ecx
    popl %ecx
    int $0x80
    xor %eax, %eax
    movb $1, %al
    xor %ebx, %ebx
    int $0x80

    те сначала я заношу в стек 0xa для \n, затем 0x4141 - для AA, потом делаю вызов write, и потом делаю вызов exit.
    так воту меня этот код ничего не выводит, хотя как я понимаю, должен вывести AA.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    f0rk
    1. popl %ecx - после этого в ecx не будет адреса строки вида "AA/n", а нужен именно адрес.
    2. pushl $0xa pushl $0x4141 - после этого в стеке не будет строки вида "AA/n", т.к. pushl помещает в стек четыре байта.
    3. даже если поместить в стек что-то похожее на $0xA4141, то могут возникнуть проблемы совместимости связанные big/little-endian.