socket ( stack overflow )

Тема в разделе "WASM.WIN32", создана пользователем el-, 12 дек 2006.

  1. el-

    el- New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    89
    пишу прогу и так случилось, что она должна стартовать как служба. вобщем эта служба стартует, все нормально единственное, что уже позже вызывается функция socket. которая со всего размаху падает в stack overflow. почему я понять не могу и из-за этого я полез в кишки этой функции.

    естественно в её кишках вызывается функция

    Код (Text):
    1. 71A93BDC   . E8 EAFDFFFF    CALL    ws2_32.WSASocketW                ; \WSASocketW
    из неё я попал в еще какую то под функцию ...

    Код (Text):
    1. 71A93A54   . 50             PUSH    EAX
    2. 71A93A55   . FF75 1C        PUSH    DWORD PTR [EBP+1C]
    3. 71A93A58   . FF75 18        PUSH    DWORD PTR [EBP+18]
    4. 71A93A5B   . 57             PUSH    EDI
    5. 71A93A5C   . FF75 10        PUSH    DWORD PTR [EBP+10]
    6. 71A93A5F   . FF75 0C        PUSH    DWORD PTR [EBP+C]
    7. 71A93A62   . FF75 08        PUSH    DWORD PTR [EBP+8]
    8. 71A93A65   . FF51 78        CALL    DWORD PTR [ECX+78]
    9. 71A93A68   . 8BD8           MOV     EBX,EAX
    10. 71A93A6A   . 8B45 DC        MOV     EAX,DWORD PTR [EBP-24]
    11. 71A93A6D   . 8970 50        MOV     DWORD PTR [EAX+50],ESI
    12. 71A93A70   . 8B7F 24        MOV     EDI,DWORD PTR [EDI+24]
    13. 71A93A73   . 8B4D E0        MOV     ECX,DWORD PTR [EBP-20]
    14. 71A93A76   . E8 6C5A0000    CALL    ws2_32.71A994E7
    15. 71A93A7B   . 83FB FF        CMP     EBX,-1
    16. 71A93A7E   . 0F84 1C7F0000  JE      ws2_32.71A9B9A0
    17. 71A93A84   > 53             PUSH    EBX                              ; /Arg1
    18. 71A93A85   . E8 3B020000    CALL    ws2_32.71A93CC5                  ; \ws2_32.71A93CC5
    19. 71A93A8A   . 8BC3           MOV     EAX,EBX
    20. 71A93A8C   > E8 8FD7FFFF    CALL    ws2_32.71A91220
    21. 71A93A91   . C2 1800        RETN    18
    как раз которая выззывается по адресу из ECX+78. уже находясь в nvappfil.dll о которой я никогда и слыхом не слыховал, вызываеся собственно странная функция, вернее значения её пареметров мне совсем не понятны ...

    Код (Text):
    1. 10008FC8   > 68 DC9A0110    PUSH    nvappfil.10019ADC                ;  UNICODE "WSPSocket intercept"
    2. 10008FCD   . 68 6D0D0000    PUSH    0D6D
    3. 10008FD2   . 68 8C800110    PUSH    nvappfil.1001808C                ;  UNICODE "spi.cpp"
    4. 10008FD7   . 68 C8CB0110    PUSH    nvappfil.1001CBC8
    5. 10008FDC   . E8 3F99FFFF    CALL    nvappfil.10002920
    собственно в ней и вызывается функция которая переполняет стек ...

    Код (Text):
    1. 1000A370  /$ 51             PUSH    ECX
    2. 1000A371  |. 3D 00100000    CMP     EAX,1000
    3. 1000A376  |. 8D4C24 08      LEA     ECX,DWORD PTR [ESP+8]
    4. 1000A37A  |. 72 14          JB      SHORT nvappfil.1000A390
    5. 1000A37C  |> 81E9 00100000  /SUB     ECX,1000
    6. 1000A382  |. 2D 00100000    |SUB     EAX,1000
    7. 1000A387  |. 8501           |TEST    DWORD PTR [ECX],EAX
    8. 1000A389  |. 3D 00100000    |CMP     EAX,1000
    9. 1000A38E  |.^73 EC          \JNB     SHORT nvappfil.1000A37C
    10. 1000A390  |> 2BC8           SUB     ECX,EAX
    11. 1000A392  |. 8BC4           MOV     EAX,ESP
    12. 1000A394  |. 8501           TEST    DWORD PTR [ECX],EAX
    13. 1000A396  |. 8BE1           MOV     ESP,ECX
    14. 1000A398  |. 8B08           MOV     ECX,DWORD PTR [EAX]
    15. 1000A39A  |. 8B40 04        MOV     EAX,DWORD PTR [EAX+4]
    16. 1000A39D  |. 50             PUSH    EAX
    17. 1000A39E  \. C3             RETN
    Код (Text):
    1. 1000A37C  |> 81E9 00100000  /SUB     ECX,1000
    2. 1000A382  |. 2D 00100000    |SUB     EAX,1000
    3. 1000A387  |. 8501           |TEST    DWORD PTR [ECX],EAX
    4. 1000A389  |. 3D 00100000    |CMP     EAX,1000
    5. 1000A38E  |.^73 EC          \JNB     SHORT nvappfil.1000A37C
    собственно на этом цикле все и происходит ... самое интересное, что если не стартовать сервис все работает отлично ... почему не знаю, мб кто подскажит ... чего можно сделать ...
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    el-
    находясь в nvappfil.dll о которой я никогда и слыхом не слыховал
    Может быть это - NVIDIA App Filter, %SYSTEMROOT%\system32\nvappfilter.dll?
    Мама на nForce?
     
  3. el-

    el- New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    89
    ну да ... но как это относится к winsock ...
    кстати вот еще такое наблюдение есть ... вызов сокета падает в стак оверфлов, если его вызов произодится из только что созданого треда или процесса ...

    т.е. я в своей проге новый процесс создаю и пару тредов в главном процессе ... если вызывать создание сокета в главном треде то все ок ... а вот если вызывать во вновь созданом процессе или треде, то все падает )))):
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    el-
    как это относится к winsock
    afaik это фаервол