![]() |
eXeL@B —› Вопросы новичков —› Как скрыть от программы запуск в среде VMware? |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 21 декабря 2012 23:39 · Поправил: stepsid · Личное сообщение · #1 всех приветствую! поискал решение на форуме, явного ответа не нашел. Вопрос: как спрятать от программы то, что она запускается в виртуальной среде VMware. Прошу Вас делиться положительным или отрицательным опытом. Итак, что мною было сделано в процессе поиска решения. 1. Нашел два документа, объясняющих как обнаружить запуск программы под виртуальной машиной а. б. 2. Добавил параметры в конфигурационный файл .vmx смотри ниже. После перезагрузки VM, использовал утилиты 2. Модифицировал serial number vmware SMBIOS, убрав упоминание о Vmware (Vmware-, VMW) 3. Удалял VMTools. 4. Мониторил с помощью 5. Отключал у процессора поддержку виртуализации, что бы исключить проверку по Следующий этап решения проблеммы - запуск программы в среде отладчика, поиск и блокировка проверяющего кода. Судя по всему, задачка не совсем тривиальная. Разработчик программы снабдил свое творение не только защитой от запуска в виртуальной среде, но и защитой от запуска в среде отладчика + частично зашифровал исполняемый код. Честно говоря, последный раз отладчиком пользовался лет 18 назад. Но сейчас посмотрю что и как, почитаю статьи на тему - думаю разберусь. И если у кого-то есть опробированное решение разворачивания комплекса отладки дебагера+дизассемблера, работающего в стелс режиме, на виртуальное машине - буду рад услышать совет. Желательно с сылками на установочные дистрибутивы и на "покурить мануалы" ![]() Спасибо. Да поможет нам 0xCD03h и 0x90h. PS: привожу список настроек vmware ws9, с которыми гостевая система проходит большинство проверок на наличие виртуальной среды. Ссылка на Code:
Совет: Не должны быть установлено VMware Tools. Все неиспользуемое оборудование - отключайте. Пример: Code:
![]() |
|
Создано: 10 июля 2013 22:15 · Поправил: stepsid · Личное сообщение · #2 ntldr пишет: cpuid с eax = 1 и проверка 31 бита в ecx, оно? однако, если не ошибаюсь, то vmware может маскировать GPUID по EAX 0,1,5,80000000h,80000001h,80000008h,8000000Ah (блокировка svm/vmx) по поводу GPUID eax=80000000Ah Code:
Однако, при установленных параметрах: Code:
AIDA64 и pcwizard2012 не видят "поднятый" бит Hypervisor в свойствах процессора. есть другой метод тестирования установленного Hypervisor bit , кроме как самому написать? ![]() |
|
Создано: 14 июля 2013 07:28 · Личное сообщение · #3 |
|
Создано: 14 июля 2013 11:03 · Личное сообщение · #4 |
|
Создано: 14 июля 2013 11:26 · Личное сообщение · #5 |
|
Создано: 14 июля 2013 13:30 · Поправил: stepsid · Личное сообщение · #6 spinz р3 это в каком смысле? если ring3, то все изменения требуется делать до загрузки гостевой системы. я же написал все на предыдущей странице. и bios-ы (системный, контроллеров), и "движок" виртуальной машины, и драйвера устройств. везде убираются известные строки, меняется, по необходимости, VendorID. подобное уже делалось, в том или ином виде, для прежних версий (ws 4, ws 6). ![]() |
|
Создано: 14 июля 2013 13:37 · Личное сообщение · #7 stepsid опс. извини, я сам не понял о чем ты спрашивал. ты говорил о той программе, которую я исследую, которая определяет наличие виртуальной среды - tnt d3 bot. думаю, что она определяет любую виртуальную среду, так как при работе программа сообщает о наличии виртуальной машины вообще, без конкретики. можешь попробовать сам. спроси в пм - брошу линк на архив. ![]() |
|
Создано: 15 июля 2013 13:02 · Личное сообщение · #8 |
|
Создано: 15 июля 2013 15:12 · Личное сообщение · #9 |
|
Создано: 15 июля 2013 15:15 · Личное сообщение · #10 |
|
Создано: 15 июля 2013 15:54 · Личное сообщение · #11 spinz другие не пробовал, только варю. spinz пишет: Если он умеет из р3 концептуально отличать натив и виртуалку - даже интересно в варе вполне может. в верхнем посте ссылка есть на тему. "... If you run your guest with binary translation, we can't intercept CPUID executed at CPL3, because that code runs in direct execution. Under binary translation, we can only intercept the CPL0 CPUID instructions that we translate. Under hardware-assisted virtualization, we intercept all CPUID instructions, regardless of privilege level. I assume you are issuing CPUID from user code at CPL3. You should be able to play with the preferred execution mode and see the effects of binary translation vs. VT-x. Under binary translation, if you "disable acceleration," we can intercept all CPUID instructions, since then everything is translated..." этот бот может иметь базу эталонных (реальных) ответов CPUID и сравнивать текущие ответы по CPUID с теми что должны быть. пример: если посмотришь, по умолчанию, все биты о термодетекторах в виртуальной машине выставлены в 0. ![]() |
|
Создано: 15 июля 2013 16:36 · Личное сообщение · #12 |
|
Создано: 15 июля 2013 17:14 · Поправил: stepsid · Личное сообщение · #13 |
|
Создано: 15 июля 2013 17:30 · Личное сообщение · #14 |
|
Создано: 15 июля 2013 17:52 · Поправил: stepsid · Личное сообщение · #15 spinz пишет: Логично. Сваять быструю недектируемую ВМ нереально не детектируемую - это вполне реально, буде у разработчиков такая задача. замечу, что всего-то и надо: - предоставить пользователям самим выбирать VendorID оборудования (контроллеры, CPU итд); - убрать определенные сигнатуры из биоса и драйверов; А вот с временными задержками исполнения виртуальной машины - проверка по RDTSC - вот тут, согласен, сложнее. Определение виртуальной среды, как правило, происходит по четко выверенным временным отпечаткам - ибо все остальные рудименты можно убрать. Что, собственно, я и попытался сделать - убрал "рудименты" - но это не скрывает виртуальную среду. ![]() |
|
Создано: 15 июля 2013 18:21 · Личное сообщение · #16 |
|
Создано: 15 июля 2013 18:39 · Поправил: stepsid · Личное сообщение · #17 так с одноядерным пнем на варе не вопрос. маскИруешь CPUID по F:M:S - будет тебе все что захочешь. работать на реальном железе не получится, так как pci pass-through ![]() |
|
Создано: 15 июля 2013 18:56 · Личное сообщение · #18 |
|
Создано: 15 августа 2013 10:52 · Личное сообщение · #19 |
|
Создано: 17 августа 2013 21:58 · Личное сообщение · #20 NRiche подробнее опишу немного позже. Вкратце: весь файл vmware-vmx.exe по сути архив из нескольких файлов. Исполняемый модуль, несколько биосов для разных контроллеров, SMIBIOS и EFIBIOS. Загружать будем SMIBIOS. Первым делом извлекаем ВСЕ необходимые файлы и указываем в конфигурации гостевой системы параметры загрузки интересующий нас биосов. Затем производим изменения в бинарниках файлов биосов с изменением необходимых контрольных сумм. Тоже с драйвером виртуального видеоадаптера. Основная задача - убрать известные нам сигратуры. Важно! В самом vmware-vmx.exe меняем сигратуры только там, где это требуется. Это определяется по смещению, полученному опытным путем, причем это смещенеие не должно быть в пределах относительного файлового адресного пространства используемых нами биосов. Тогда проблем с запуском не будет. ![]() |
|
Создано: 03 сентября 2013 18:58 · Личное сообщение · #21 |
<< . 1 . 2 . |
![]() |
eXeL@B —› Вопросы новичков —› Как скрыть от программы запуск в среде VMware? |