всё про "обратную трассировку"

Тема в разделе "WASM.RESEARCH", создана пользователем VaVa, 2 мар 2020.

  1. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Нет не я. Может это Alchemistry или Bad_guy проверяют вашу профпригодность и способность отвечать на самые неожиданные вопросы? :)
     
  2. Indy_

    Indy_ Well-Known Member

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

    Это либо ты либо тс, а может это два акка одного человека, что впрочем по стилю заметно. У меня на вас годами наработан детект(лучше сказать чутьё"). Особенно если он с мотивом и по времени сходится, то всё понятно.)

    Рассказывай что изучил/сделал по теме.
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    А может это я?
     
  4. Indy_

    Indy_ Well-Known Member

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

    У тебя терпение бы кончилось как и у меня впрочем, на первой 5-ке предложений ;)
     
  5. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    а где-бы прочитать про принцип "морф и вирт"?
    Морф- типо пустые инструкции??? как их автоматом не убирают?
     
  6. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Rel, т.е. к трассировке или к отладке они никакого отношения не имеют?
     
  7. Indy_

    Indy_ Well-Known Member

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

    Вот сегодня свежий семпл https://exelab.ru/f/?action=vthread&forum=5&topic=26358&page=1#19

    Копался я отладчиком, бестолку. Крутил визором, тоже толку нет. Поведение протектора изменяется не известно по какой причине. Что бы выяснить наверняка трейснул. Причём из за адресной рандомизации нельзя адреса сохранять в дамп, поэтому в простейшем случае сохраняется тело инструкции в лог. Для экономии памяти я использовал простую функцию от инструкции(f(Ip, Size):byte), последовательность в дамп. Далее для двух дампов находится первое отличие. Несколько нашлось, вот только эта инфа оказалась бесполезна - во первых там морф, а во вторых поведение найденного места зависит от состояния, которое было спустя огромное число инструкций и что назад трейсить не понятно :suicide:

    Так что это всё для сложных ситуаций не решение и не метод. Пришлось крутить визором и восстанавливать код апп, путём перебора. Выяснилось что загрузка из памяти как то влияет на протектор. Как найти почему и где тоже не ясно :dash1:

    Ну а как прикрутить пины юникорны для такой тривиальной задачи вообще хз.
     
    q2e74 нравится это.
  8. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Indy_, я что хотел у вас спросить. Вы с Юникорном никогда дела не имели? Представляете как он работает? Ну т.е. что-нибудь хотя бы простенькое с применением Юникорна сможете скомпилировать? Или он вам вообще не интересен?

    И почти то же самое хотел спросить по ПИНу. Вы с его АПИ случайно не разбирались(не вникали) никогда? А то у меня есть код для ПИНа, в котором есть ошибка, а я не могу понять где. В этом коде сделана попытка повторить работу SDE - для тренировки и лучшего понимания работы ПИНа.
     
  9. Indy_

    Indy_ Well-Known Member

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

    Я пин смотрел как бинарь, не только отладчиком, но и однотипным инструментом https://wasm.in/threads/podderzhka-avx-512-vindoj.33288/ что бы выяснить ключевую часть работы, это не позволяет сделать отладчик. Собирать я никогда его не собирал, оно слишком толстое.

    > Вы с Юникорном никогда дела не имели?

    На этом моторе основан известный тулз к крэклаба. Смысла его использовать нет, на кл обширная тема по этому вопросу была. Какой смысл эмулировать среду без системных вызовов..Проще напрямую исполнять или создать песочницу. Бесполезная штуковина.
    --- Сообщение объединено, 5 мар 2020 ---
    Кстате я прорабатывал тему блокировки ядерных вызовов. Есть одна возможность уйти из под слоя визора в юм, это обратные теневые вызовы из гуя https://wasm.in/threads/stek-tenevyx-kalbehkov.25135/

    Решилось просто, так как при трансляции адр. пространство не исполняемо, то оно всё блокируется от исполнения(за исключением кодовой секции нт, она может релоцироваться в протекченую от записи память). Хотя это было реализовано, но никогда не видел что бы такой выход был визор/отладчик.., кроме своих поделок конечно ;)
     
    q2e74 нравится это.
  10. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Да! Занимательные рассуждения по теме: "что такое SDE и чем он отличается от PIN'а". :) На мой взгляд, отличия есть, но не глобальные. SDE - это эмулятор на базе PIN'а, а PIN - это фреймворк со свом АПИ, на базе которого можно скомпилировать и SDE, и много еще чего полезного.
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Это эмулятор различных цпу - ни больше, не меньше, задача эмуляции системных вызовов он и не должен решать. Смысл в том, чтобы предоставить инструмент для создания различных сред для эмуляции кода, как например с различной степенью успешности делают проекты из этого списка: https://www.unicorn-engine.org/showcase/
     
  12. Indy_

    Indy_ Well-Known Member

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

    Я имел ввиду использование эмулятора cpu без эмуляции окружения, памяти например или ядра. Вопрос есчо в уровне реализации эмуляции cpu, тоесть например для использования в user незачем эмулировать механизмы трансляции памяти и прочие аппаратные штуки. У аверов вирт машин эмулятор cpu самый простой, несколько таблиц опкодов.
     
  13. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Какую интересную штуку я нашел в списке по ссылке Rel'а. Plug-in отладчик для Иды на базе Юникорна от автора знаменитой книги про Иду. Юникорн, как я понял, используется для того, чтобы можно было отлаживать исполняемые файлы для различных архитектур ( ARM, MIPS, x86 ...). Интересно, а какую-нибудь малварь на таком плагине отладчике дебажить безопасно? Вроде как, внутри эмулятора же будет все исполняться.
     
  14. Indy_

    Indy_ Well-Known Member

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

    Пока ты сам не поработаешь с этим, так и будешь спрашивать не ясно что. Я вот например два дня визором крутил тот семпл что так надоело, лень даже посмотреть отладчиком бажное место. Интересно конечно если можно любой семпл крутнуть и достать нужную инфу, но эта работа слишком топорна" - непрерывная компиляция-запуск-отладка и так сотни раз, часами.. Вроде бы автоматика должна по идеи упрощать решение, но реально это никакое не упрощение. Но иначе как решить..

    > Интересно, а какую-нибудь малварь на таком плагине отладчике дебажить безопасно?

    Безопасно на вирт машине. Зачем эти эмуляторы вообще нужны, эмуляция закончится на первом сервисном вызове. Там выше по ссылке куча проектов на uc, но если каждый посмотреть то там уг на питоне и сама поделка на qemu. Нужно либо эмулировать всю ос, либо реализовать песочницу. Промежуточное решение полный песполезный бред.
     
    savoyard нравится это.
  15. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Спасибо, Инди. Интересно было узнать ваше мнение.
    С удовольствием выслушаю еще кого-нибудь кто в теме.
    Может будут какие-нибудь дополнения к сказанному Инди.
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Любой софтварный эмулятор без прямого доступа к железу может считаться безопасным, но опять же может иметь какие-то уязвимости, которые приводят к исполнению произвольного кода, как и любое другое по.
     
    savoyard нравится это.
  17. savoyard

    savoyard Member

    Публикаций:
    0
    Регистрация:
    16 янв 2020
    Сообщения:
    42
    Rel, выходит, что автор знаменитой книги про Иду руководствовался по меньшей мере двумя идеями при разработке своего плагина отладчика для Иды?

    1. Поддержка нескольких архитектур процессоров.
    2. Возможность безопасной отладки какого-нибудь вредоносного кода.