Странны код, неизвестно для чего.

Тема в разделе "WASM.HEAP", создана пользователем osrootd, 30 дек 2008.

  1. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Ковырял гугл по запросу dlopen() на codesearch

    Наткнулся уже не помню где вот на такую конструкцию:

    Код (Text):
    1. section .text
    2.  
    3. extern printf
    4. extern exit
    5.  
    6. instr db "this is test text. Use another to test"
    7. outstr db ">",10,0
    8.  
    9. global main
    10.  
    11. main:
    12.  
    13.     lea eax, [instr]
    14.     sub ax,97h
    15.     inc ax
    16.     xor ax, 101h
    17.     add ax, 0x30
    18.     xor eax, 150h
    19.     push eax
    20.     call printf
    21.     pop eax
    22.  
    23.     mov eax, ebx
    24.     xor eax, eax
    25.  
    26.     lea eax, [instr]
    27.     xor ax, 4h
    28.     push eax
    29.     call printf
    30.     pop eax
    31.     xor ecx, ecx
    32. mcze:  
    33.     inc ecx
    34.     cmp ecx, 6
    35.     je tpo
    36.     xchg eax, ebx
    37.     add ax, 0x101
    38.     inc ax
    39.     or ax, 0x3
    40.     push eax
    41.     call mcze
    42. tpo:   
    43.     call printf
    44.     pop eax
    45.    
    46.     xor eax, eax
    47. ex:
    48.     call exit
    49.     leave
    50.     ret
    Что тут происходит я понять не могу. Код работает и выводит абракадабру на экран. Но логики он напрочь лишен. По крайней мере я так думаю. Или в этих конструкциях есть смысл?
     
  2. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    В отладчике не смотрел? Конечно он будет выводить абракадабру, т.к. все адреса, передаваемые в printf, завязаны на адрес instr(причем нелинейно)
    По-моему это писали под траву, особенно радует две команды сложения для одного регистра подряд и особенно
    Код (Text):
    1.     call exit
    2.     leave
    3.     ret
     
  3. osrootd

    osrootd New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2008
    Сообщения:
    1.086
    Это я сначала увидел

    Гугл вообще часто так жгёт:)