За последние 24 часа нас посетили 23048 программистов и 1682 робота. Сейчас ищут 1195 программистов ...

CGI-программа на ассемблере

Тема в разделе "HUMOR.PHP.RU", создана пользователем Davil, 25 сен 2006.

  1. Davil

    Davil Guest

    Код (Text):
    1.  
    2. .386
    3. .model flat,stdcall
    4. includelib import32.lib
    5. .const
    6. PAGE_READWRITE         =     4h
    7. MEM_COMMIT             =     1000h
    8. MEM_RESERVE            =     2000h
    9. STD_INPUT_HANDLE       =     -10
    10. STD_OUTPUT_HANDLE      =     -11
    11.  
    12. .data
    13. hStdout         dd ?
    14. hStdin          dd ?
    15. hMem            dd ?
    16. header:
    17.                 db 'Content-Type: text/html',13,10,13,10,0
    18. start_html:
    19.                 db '<html><body><b>Окружение CGI-программы выглядит \
    20.                     так:</b><br>',13,10,0
    21. for_stdin:
    22.                 db '<b>STDIN программы содержит:</b><br>',13,10,0
    23. end_html:
    24.  
    25.                 db '</body></html>',13,10,0
    26. nwritten        dd ?
    27. toscr           db 10 dup (32)
    28.                 db ' - Тип файла',0
    29. .code
    30. _start:
    31.  
    32.         xor     ebx,ebx
    33.         call    GetStdHandle,STD_OUTPUT_HANDLE
    34.         mov     hStdout,eax
    35.         call    GetStdHandle,STD_INPUT_HANDLE
    36.         mov     hStdin,eax
    37.  
    38.         call    write_stdout, offset header
    39.         call    write_stdout, offset start_html
    40.  
    41.         call    VirtualAlloc,ebx,1000,MEM_COMMIT+MEM_RESERVE,PAGE_READWRITE
    42.         mov     hMem,eax
    43.         mov     edi,eax
    44.         call    GetEnvironmentStringsA
    45.         mov     esi,eax
    46. next_symbol:
    47.         mov     al,[esi]
    48.         or      al,al
    49.         jz      end_string
    50.         mov     [edi],al
    51. next_string:
    52.         cmpsb
    53.         jmp     short next_symbol
    54. end_string:
    55.         mov     [edi],'>rb<'
    56.         add     edi,3
    57.         cmp     byte ptr [esi+1],0
    58.         jnz     next_string
    59.         inc     edi
    60.         stosb
    61.         call    write_stdout, hMem
    62.         call    write_stdout, offset for_stdin
    63.  
    64.         call    GetFileSize,[hStdin],ebx
    65.         mov     edi,hMem
    66.         call    ReadFile,[hStdin],edi, eax,offset nwritten, ebx
    67.         add     edi,[nwritten]
    68.         mov     byte ptr [edi],0
    69.         call    write_stdout, hMem
    70.         call    write_stdout, offset end_html
    71.         call    VirtualFree,hMem
    72.         call    ExitProcess,-1
    73.  
    74. write_stdout    proc bufOffs:dword
    75.         call    lstrlen,bufOffs
    76.         call    WriteFile,[hStdout],bufOffs,eax,offset nwritten,0
    77.         ret
    78. write_stdout    endp
    79. extrn   GetEnvironmentStringsA:near
    80. extrn   GetStdHandle:near
    81. extrn   ReadFile:near
    82. extrn   WriteFile:near
    83. extrn   GetFileSize:near
    84. extrn   VirtualAlloc:near
    85. extrn   VirtualFree:near
    86. extrn   ExitProcess:near
    87. extrn   lstrlen:near
    88. ends
    89. end             _start
     
  2. Mavir

    Mavir Guest

  3. Anonymous

    Anonymous Guest

    Я только одного не понял. Почему в HUMOR.PHP.RU.
    Хоть это к PHP и не относится, но такая программа вполне рабочая.
    А кто смеётся, так попробуйте сначала сделать, что не будь подобное.
     
  4. Anonymous

    Anonymous Guest

    Davil, блин, не смешно)))) хоть и в PHP.HUMOR - ты знаешь, что я имел ввиду)))
     
  5. Davil

    Davil Guest

    Виктор
    Извините, я смеялся не над программой, а над фразой
    Она абсолютно не подходит к тем, кто не разбирается в ассемблере, поэтому вызывает неординарное чувство, вследствие которого данный топик (на мой взгляд) не относится к простой болтовне.

    Причем данная программа как раз делается по принципу
    выстрел в ногу (обсуждался на данном форуме http://php.ru/forum/viewtopic.php?t=1885)
    ASM:
    1.придумай ногу
    2.придумай пулю
    3.придумай ствол
    4.придумай траэкторию полета
    5.реализуй это все
    6.стреляй
    Мне кажется, что данный подход не следует применять к Веб программированию...
     
  6. Davil

    Davil Guest

    Догадываюсь... :D
     
  7. Anonymous

    Anonymous Guest

    Если при помощи CGI-сценариев, то ставишь программу(типа сетевого экрана) и смотришь как происходит взаимодействии.
    Но если используется шифрование (или другие извраты), то просто забудь про Бот’а.