Нет не я. Может это Alchemistry или Bad_guy проверяют вашу профпригодность и способность отвечать на самые неожиданные вопросы?
savoyard, Это либо ты либо тс, а может это два акка одного человека, что впрочем по стилю заметно. У меня на вас годами наработан детект(лучше сказать чутьё"). Особенно если он с мотивом и по времени сходится, то всё понятно.) Рассказывай что изучил/сделал по теме.
а где-бы прочитать про принцип "морф и вирт"? Морф- типо пустые инструкции??? как их автоматом не убирают?
savoyard, Вот сегодня свежий семпл https://exelab.ru/f/?action=vthread&forum=5&topic=26358&page=1#19 Копался я отладчиком, бестолку. Крутил визором, тоже толку нет. Поведение протектора изменяется не известно по какой причине. Что бы выяснить наверняка трейснул. Причём из за адресной рандомизации нельзя адреса сохранять в дамп, поэтому в простейшем случае сохраняется тело инструкции в лог. Для экономии памяти я использовал простую функцию от инструкции(f(Ip, Size):byte), последовательность в дамп. Далее для двух дампов находится первое отличие. Несколько нашлось, вот только эта инфа оказалась бесполезна - во первых там морф, а во вторых поведение найденного места зависит от состояния, которое было спустя огромное число инструкций и что назад трейсить не понятно Так что это всё для сложных ситуаций не решение и не метод. Пришлось крутить визором и восстанавливать код апп, путём перебора. Выяснилось что загрузка из памяти как то влияет на протектор. Как найти почему и где тоже не ясно Ну а как прикрутить пины юникорны для такой тривиальной задачи вообще хз.
Indy_, я что хотел у вас спросить. Вы с Юникорном никогда дела не имели? Представляете как он работает? Ну т.е. что-нибудь хотя бы простенькое с применением Юникорна сможете скомпилировать? Или он вам вообще не интересен? И почти то же самое хотел спросить по ПИНу. Вы с его АПИ случайно не разбирались(не вникали) никогда? А то у меня есть код для ПИНа, в котором есть ошибка, а я не могу понять где. В этом коде сделана попытка повторить работу SDE - для тренировки и лучшего понимания работы ПИНа.
savoyard, Я пин смотрел как бинарь, не только отладчиком, но и однотипным инструментом https://wasm.in/threads/podderzhka-avx-512-vindoj.33288/ что бы выяснить ключевую часть работы, это не позволяет сделать отладчик. Собирать я никогда его не собирал, оно слишком толстое. > Вы с Юникорном никогда дела не имели? На этом моторе основан известный тулз к крэклаба. Смысла его использовать нет, на кл обширная тема по этому вопросу была. Какой смысл эмулировать среду без системных вызовов..Проще напрямую исполнять или создать песочницу. Бесполезная штуковина. --- Сообщение объединено, 5 мар 2020 --- Кстате я прорабатывал тему блокировки ядерных вызовов. Есть одна возможность уйти из под слоя визора в юм, это обратные теневые вызовы из гуя https://wasm.in/threads/stek-tenevyx-kalbehkov.25135/ Решилось просто, так как при трансляции адр. пространство не исполняемо, то оно всё блокируется от исполнения(за исключением кодовой секции нт, она может релоцироваться в протекченую от записи память). Хотя это было реализовано, но никогда не видел что бы такой выход был визор/отладчик.., кроме своих поделок конечно
Да! Занимательные рассуждения по теме: "что такое SDE и чем он отличается от PIN'а". На мой взгляд, отличия есть, но не глобальные. SDE - это эмулятор на базе PIN'а, а PIN - это фреймворк со свом АПИ, на базе которого можно скомпилировать и SDE, и много еще чего полезного.
Это эмулятор различных цпу - ни больше, не меньше, задача эмуляции системных вызовов он и не должен решать. Смысл в том, чтобы предоставить инструмент для создания различных сред для эмуляции кода, как например с различной степенью успешности делают проекты из этого списка: https://www.unicorn-engine.org/showcase/
Rel, Я имел ввиду использование эмулятора cpu без эмуляции окружения, памяти например или ядра. Вопрос есчо в уровне реализации эмуляции cpu, тоесть например для использования в user незачем эмулировать механизмы трансляции памяти и прочие аппаратные штуки. У аверов вирт машин эмулятор cpu самый простой, несколько таблиц опкодов.
Какую интересную штуку я нашел в списке по ссылке Rel'а. Plug-in отладчик для Иды на базе Юникорна от автора знаменитой книги про Иду. Юникорн, как я понял, используется для того, чтобы можно было отлаживать исполняемые файлы для различных архитектур ( ARM, MIPS, x86 ...). Интересно, а какую-нибудь малварь на таком плагине отладчике дебажить безопасно? Вроде как, внутри эмулятора же будет все исполняться.
savoyard, Пока ты сам не поработаешь с этим, так и будешь спрашивать не ясно что. Я вот например два дня визором крутил тот семпл что так надоело, лень даже посмотреть отладчиком бажное место. Интересно конечно если можно любой семпл крутнуть и достать нужную инфу, но эта работа слишком топорна" - непрерывная компиляция-запуск-отладка и так сотни раз, часами.. Вроде бы автоматика должна по идеи упрощать решение, но реально это никакое не упрощение. Но иначе как решить.. > Интересно, а какую-нибудь малварь на таком плагине отладчике дебажить безопасно? Безопасно на вирт машине. Зачем эти эмуляторы вообще нужны, эмуляция закончится на первом сервисном вызове. Там выше по ссылке куча проектов на uc, но если каждый посмотреть то там уг на питоне и сама поделка на qemu. Нужно либо эмулировать всю ос, либо реализовать песочницу. Промежуточное решение полный песполезный бред.
Спасибо, Инди. Интересно было узнать ваше мнение. С удовольствием выслушаю еще кого-нибудь кто в теме. Может будут какие-нибудь дополнения к сказанному Инди.
Любой софтварный эмулятор без прямого доступа к железу может считаться безопасным, но опять же может иметь какие-то уязвимости, которые приводят к исполнению произвольного кода, как и любое другое по.
Rel, выходит, что автор знаменитой книги про Иду руководствовался по меньшей мере двумя идеями при разработке своего плагина отладчика для Иды? 1. Поддержка нескольких архитектур процессоров. 2. Возможность безопасной отладки какого-нибудь вредоносного кода.