1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Поддержка AVX-512 виндой

Тема в разделе "WASM.WIN32", создана пользователем Jin X, 9 май 2019.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    348
    Адрес:
    Кольца Сатурна
    Ну как же "под отладчиком", когда я запускаю SDE, а в загрузившемся в нём CMD уже отладчик? И в отладчике открываю уже свой EXE-шник. Отладчик при этом загружается медленно, т.е. эмулятор работает поверх отладчика. Но при этом вместо своей проги в отладчике я вижу PinVM.

    Да. Другие, которые у меня есть, вообще не работают.
    OllyDbg просто запускает прогу; WinDbg не грузит даже; IDA в зависимости от выбранного отладчика либо просто запускает прогу (Local Windows debugger), либо идёт по шагам, но работает неполноценно (Bochs x64 - окна консоли нет, cpuid показывает чушь), остальные не могу запустить.
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Jin X,

    Тогда запускается под эмулятором отладчик, а не отлаживаемое апп. Эмуляция локальна в системе, в одном процессе. Что бы видеть как апп эмулируется нужно взять под отладку эмулируемое апп. Но само апп отлаживать не получится - код его не исполняется, а транслируется и эмулируется. Вот к примеру cpuid, на скрине её эмуляция - номер функции индексируется в таблице(снизу) и выбираются 4 значения и сохраняются в контекст. Красным выделены функции 0 & 7(Eax = 0/7). Для cpuid(7): A = 0, B = F3BFF7AF, C = 405F5E, D = 10.
    Тоесть в отладчике можно только посмотреть код/данные, там ничего не исполняется, ну кроме самого эмулятора. Не удивительно что у вас под отладчиком реальная cpuid, а не виртуальная ;)
     

    Вложения:

    • cpuid.png
      cpuid.png
      Размер файла:
      30,5 КБ
      Просмотров:
      400
    Jin X и q2e74 нравится это.
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Отлаживал и нашёл странность. Часто используется инструкция C5 F8 77: LDS.

    Это просто VEX, обычная инструкция VZEROUPPER. Олли гнилой совсем отладчик, x64dbg корректно обрабатывает.
     
  4. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    348
    Адрес:
    Кольца Сатурна
    А почему так?
    Если я выполню CreateProcess, новый процесс же будет эмулироваться?
    Почему тогда отладить его не получается? Почему не эмулируется отладка этой проги?
    К примеру, если я запускаю какой-нибудь DOSBox (тоже эмулятор), и в нём открываю Turbo Debugger, в который загружаю прогу, я же вижу код проги под отладчиком, а не эмулятора.
    Или в DOSBox и Pin эмуляция принципиально по-разному устроена?
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Jin X,

    Потому что SDE это локальный эмулятор, он инжектится в процесс, перехватывает точки входа в юзер и эмулирует инструкции в потоках, при этом окружение реальное, те например поточный стек и сервисы ядра вызываются как при исполнении. Всякие dosbox/vmware это полноценные визоры, они глобальные(эмулируют всю ОС). Поэтому вот и разница - в полноценном визоре вы увидите непосредственно cupid например в коде и её виртуальный результат, а в таких как SDE эмуляторах такой инструкции нет, так как она эмулируется в том же режиме и в том же процессе.

    Может и есть какой то механизм наследования, тоесть отслеживание и инжект в потомки, я видел какие то коменты с этим связанные в sde, но это нужно проверять. Но в любом случае кода эмулируемого там нет и отлаживать нечего. Хотя в описании к sde есть даже целая статья по отладке, но то видимо отладка через сурки.
    --- Сообщение объединено, 21 май 2019 ---
    Кстате мой dye работает аналогично. Только разница в типе управления cfg, sde(pin) эмулирует инструкции, у меня они исполняются напрямую в поточных буферах. Это даёт преимущество по профайлу(те возможна пакетная обработка, когда блок загружается на исполнение; при эмуляции такое невозможно).

    В остальном одинаково - захватываются входы в юзер, некоторые сервисы специально обрабатываются, что бы управление не вышло из под визора. Смысла в локальной эмуляции я вообще не вижу, нужен лишь адресный декодер, который транслирует EA в VA, те монитор выборки.
     
    Jin X нравится это.
  6. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    348
    Адрес:
    Кольца Сатурна
    Indy_, ясно, спасибо!
    Что за DYE, можно глянуть?
     
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    Jin X,

    Думаю вам это не нужно. Тем более есть старый и достаточный билд который легко находится, а есчо вы не разбираетесь в предмете. Так что не вижу смысла это вам давать, тем более что это используется для анализа защиты, вы сольёте сурки, потом придётся фиксить. А на отладку нужна куча времени. Те у меня нет причин вам доверять, я вас не знаю.