VirtualBox и winapi

Тема в разделе "WASM.ZEN", создана пользователем Deader, 26 авг 2011.

  1. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Корректно ли выполняется все 32-битное WinAPI под VirtualBox(v.4.0.8)? Я имею ввиду, соответствуют ли номера вызываемых функций(значения eax) перед вызовом sysenter/int 2e/fs:c0 в VirtualBox значениям eax в реальных ОС? Прежде всего интересует win7 32bit.
     
  2. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    курите?

    Весь софт ставится отдельно, виртуалка эмулирует только железо. Отсюда очевидно, что вы туда поставите, тому и будет соответствовать.
     
  3. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.615
    Адрес:
    Russia
    у меня на хр сп3 антивирь симантека падал вместе с системой под виртуалкой
     
  4. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    выпиваю, но не сейчас
    просто программа, пользующая ядреные вызовы вместо апи иногда не работает на VirtualBox, но замечательно пашет на реальном железе. отсуда и сей вопрос. хотя дело может быть в самом виндовозе, а не в виртуалке, я поэтому и спрашиваю.
     
  5. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Кстати, я работая с VirtualBox наткнулся на такую штуку, что команда sidt возвращает невалидное для ОС значение. Где-то читал по этому поводу, что при выполнении этой команды в VB возвращается указатель на таблицу обработчиков исключений самой виртуалки, а не гостевой ОС. Возможно, проблемы падающего софта связаны как раз с такими командами...
     
  6. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
  7. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    http://flierlu.blogspot.com/2008/04/virtualization-detection.html
     
  8. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    А у Вас и тем и там машины многопроцессорные, может в этом проблема?
     
  9. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Проблема в этом действительно была, но только тогда не работало на реальных машинах(с разным кол-вом CPU). Сейчас работает на любых от 1 до 4 ядерных компах, но спонтанно не пашет на VB. Правда, делать VB многоядерным я не пробовал.

    Главное мое подозрение состоит в том, что виндовоз, обнаружив VM, меняет для некоторых своих API номера функций, только я этого пока не обнаружил )))) поэтому и создал тему.
     
  10. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Нет он такого не делает
     
  11. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Некоторые инструкции могут выполняться не так как нужно из-за багов в VirtualBox. Правда разумеется они достаточно редкоиспользуемые иначе бы в VirtualBox невозможно было запустить никакую ОС.
     
  12. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    а можно конкретно плиз? какие такие "некоторые инструкции"?
     
  13. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Это да, и не только из-за багов, но я на 99% уверен что это не тот случай...

    Deader
    А вообще код в студию)
     
  14. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    Итого я вам всем скажу, что на виртуальных машинах проги выполняются СОВЕРШЕННО ПО ДРУГОМУ, нежели на реальных осях. Код я выкладывать не буду, ибо не имею права. Но попробуйте создать, например, поток через Int2E/call fs:[C0] без уведомления crss и вы увидите, что поток прекрасно работает всех на реальных осях и не пашет на виртуалках. Сделаю в своей проге опцию для виртуалок - "включить лохосовместимость(запускать на вм)".
    -----------------------
    зы
    2-й, пример - если вы создадите процесс без zwcreateprocess(для незнающих говорю - это можно сделать) - он будет работать в реале и не будет на вм. вм - лажа.
     
  15. Deader

    Deader New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2011
    Сообщения:
    96
    сишники - лохи мелкомягкие, Delphi+Assembler рулит! На Delphi и Asm я сделаю вещи, которые сишникам(перекреститься 3 раза еп.т.м.) и не снились.
     
  16. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Не VM, а Virtual Box. Лучше проверьте на Virtual PC или Vm Ware :)