Несовместимость Ос Xp и 2000

Тема в разделе "WASM.WIN32", создана пользователем Perre, 1 ноя 2007.

  1. Perre

    Perre New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2007
    Сообщения:
    100
    Программа работает нормально на Xp но на 2000 сразу же ошибка (инструкция по адресу “0x77e23123” обращение к памяти “0x0000004f”).
    Использую WinApi:
    Код (Text):
    1.   Import Module 001: ws2_32.dll
    2.  Addr:0000528C hint(006B) Name: socket
    3.  Addr:00005284 hint(0067) Name: send
    4.  Addr:0000527C hint(0064) Name: recv
    5.  Addr:00005272 hint(0061) Name: listen
    6.  Addr:0000526A hint(005D) Name: htons
    7.  Addr:0000525C hint(005A) Name: getsockname
    8.  Addr:0000524E hint(0055) Name: getpeername
    9.  Addr:00005240 hint(0050) Name: closesocket
    10.  Addr:00005238 hint(004F) Name: bind
    11.  Addr:0000522E hint(004E) Name: accept
    12.  Addr:00005220 hint(003F) Name: WSAStartup
    13.  Addr:00005212 hint(000E) Name: WSACleanup
    14.  Addr:00005200 hint(000B) Name: WSAAsyncSelect
    15.    Import Module 002: comctl32.dll
    16.  Addr:000052A2 hint(003E) Name: InitCommonControls
    17.    Import Module 003: user32.dll
    18.  Addr:000052E8 hint(00AD) Name: EndDialog
    19.  Addr:000052F4 hint(00F2) Name: GetDlgItem
    20.  Addr:00005302 hint(00F4) Name: GetDlgItemTextA
    21.  Addr:00005314 hint(0163) Name: InvalidateRect
    22.  Addr:00005326 hint(017B) Name: KillTimer
    23.  Addr:00005332 hint(0184) Name: LoadIconA
    24.  Addr:0000533E hint(019D) Name: MessageBoxA
    25.  Addr:0000534C hint(01A8) Name: MoveWindow
    26.  Addr:0000535A hint(01DD) Name: SendDlgItemMessageA
    27.  Addr:00005370 hint(01E2) Name: SendMessageA
    28.  Addr:00005380 hint(01F8) Name: SetDlgItemTextA
    29.  Addr:00005392 hint(0217) Name: SetTimer
    30.  Addr:0000539E hint(022D) Name: ShowWindow
    31.  Addr:000052C6 hint(008A) Name: DialogBoxParamA
    32.  Addr:000052D8 hint(00AB) Name: EnableWindow
    33.    Import Module 004: kernel32.dll
    34.  Addr:0000547E hint(02BB) Name: lstrcpyA
    35.  Addr:00005472 hint(029E) Name: WriteFile
    36.  Addr:0000545E hint(0243) Name: SetPriorityClass
    37.  Addr:00005452 hint(01F7) Name: ReadFile
    38.  Addr:000053C6 hint(0030) Name: CreateFileA
    39.  Addr:00005434 hint(0172) Name: GlobalLock
    40.  Addr:00005426 hint(016E) Name: GlobalFree
    41.  Addr:00005418 hint(0167) Name: GlobalAlloc
    42.  Addr:00005404 hint(0109) Name: GetModuleHandleA
    43.  Addr:000053F6 hint(00F5) Name: GetFileSize
    44.  Addr:000053E2 hint(00DB) Name: GetCurrentProcess
    45.  Addr:00005442 hint(0175) Name: GlobalReAlloc
    46.  Addr:000053D4 hint(0080) Name: ExitProcess
    47.  Addr:000053B8 hint(001A) Name: CloseHandle
    48.    Import Module 005: shell32.dll
    49.  Addr:00005498 hint(006C) Name: Shell_NotifyIconA
    К сожалению больше добавить нечего (т.к. 2000 у меня не стоит, а при запуске на чужой машине отладочных прог не было под рукой). Слышал, что на 2000 усиленная безопасность и из за этого есть проблемы с совместимостью, может кто знает в сторону каких Api капать?
     
  2. EP_X0FF

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    Куда копать? Предположительно в сторону функций из user32.dll

     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    сначала покопай в сторону сохранения ebx в оконных процедурах - в 98/ХР его можно коцать, а в 2000 - нельзя.
     
  4. Perre

    Perre New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2007
    Сообщения:
    100
    Буду пробовать :=)
     
  5. Perre

    Perre New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2007
    Сообщения:
    100
    Сохранение регистра EBX частично помогло, теперь вылетает иногда, и опять только под 2000
     
  6. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Perre
    Надо копать в сторону использования отладчика
     
  7. Noble Ghost

    Noble Ghost New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2004
    Сообщения:
    204
    Адрес:
    Russia
    EGOiST помнится долго разбирался с подобной проблемой.
    тогда ему хватило моих логов исполнения программы в ollydbg под win2k
     
  8. Perre

    Perre New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2007
    Сообщения:
    100
    Тут кокета мелочь (наверно опять где-то несохранённый регистр), может надо восстанавливать регистр ebx и при вызове Api ?
    Я даже не могу понять, что надо искать в отладчике, если прога может пол часа нормально проработать. В проге используются асинхронные сокеты и таймер, думаю надо капать в эту сторону. Ситуация тяжела ещё тем, что у меня Xp , не могу же я сутками сидеть у друга и ждать пока она заглючит.
    Если у кого-то были подобные проблемы, пожалуйста напишите, из за чего они возникли как вы их решили.
     
  9. al79

    al79 Алексей

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    133
    Адрес:
    Екатеринбург
    Вроде сталкивался с такой фигнёй, при вызове некоторых API, а так же по завершению оброботки сообщений флаг "d" должен быть сброшен, может ты где его устанавливаешь в "1". (Хотя и ХР вроде на это ругается).
     
  10. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Поставь виртуальную машину - сильно поможет.