Отличить "Виртуальную машину" от основной
|
|
HTTqp | Дата: Четверг, 19.02.2015, 21:05 | Сообщение # 1 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| Вобщем вопрос указан в теме) Как отличить "Виртуальную машину" от основной, есть масса вариантов в поисковике но там получается что для каждой программы (будь то VirtualBox, VMware Fusion и т.п.) отдельная функция, нет ли единого способа, потому что например авиры порой при проверки программы запускают их как раз в "Виртуальных машинах" чтобы посмотреть действия, как этого избежать, писать все функции в программу, для каждой отдельной "Виртуальной машины"?
|
|
| |
Волк-1024 | Дата: Четверг, 19.02.2015, 22:15 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Первое, что приходит в голову - это замерять время исполнения какого-то ресурсоёмкого участка кода. Под виртуальной машиной он будет в разы дольше исполняться, чем на реальной. И да, у антивирусов нет виртуальных машин в том виде, в котором ты подразумеваешь.
Pascal, C\C++, Assembler, Python
|
|
| |
HTTqp | Дата: Четверг, 19.02.2015, 22:38 | Сообщение # 3 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| не просто некоторые антивирусы при отправке например им файла тестят путем эмуляции запуска в своей среде или что то подобное) я вот это имел ввиду
|
|
| |
xXxSh@dowxXx | Дата: Четверг, 19.02.2015, 22:46 | Сообщение # 4 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| Цитата HTTqp ( ) не просто некоторые антивирусы при отправке например им файла тестят путем эмуляции запуска в своей среде или что то подобное) я вот это имел ввиду Согласен с Волк-1024, в антивирях немного иной вид виртуализации\эмуляции (песочницы), но по общим признакам я думаю можно что то накопать, если конечно разобраться более детально как они это проворачивают.
PS: кстати говоря тема интересная, сам как то об этом подумывал, нужно будет поковыряться.
|
|
| |
Anton93 | Дата: Пятница, 20.02.2015, 17:40 | Сообщение # 5 |
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
| с wm av такой вариант находил
Код program Project2;
{$APPTYPE CONSOLE}
uses Windows;
procedure TrueEntryPoint; begin MessageBoxW(0, 'Hello World', '', MB_OK); end;
procedure AntiEmul; var lpSystemTime: _SYSTEMTIME; asm push 0 popfd lea eax, lpSystemTime push eax call GetSystemTime pushfd pop eax add eax, offset TrueEntryPoint sub eax, $00000246 call eax end;
begin AntiEmul; end.
в TrueEntryPoint нужный код. когда происходит эмуляция апи - результат в eax, а он не учитывает регистр флагов
так же есть вариант опять поиграться с апи и вызвать функцию с "необычными" под эмулятором и реальной средой значения будут разные. в Sality использовался многократный вызов FreeLibrary с несуществующими хендлами библиотек.
например так Код FreeLibrary(h1); FreeLibrary(h2); FreeLibrary(h3);
после анализировались полученные занчения.
еще вариант с апи вызывать функцию, но ограничить размер приемника. в реальной среде будет ошибка по эмулятором ав будет все ок.
и наконец классика - шифруем участки кода. ключ берем из "необычных" мест, которые в эмуляторе обычно забиваются ерундой. в результате ав никгда не расшифрует в витруалке код программы
ICQ: 41896
|
|
| |
HTTqp | Дата: Пятница, 20.02.2015, 18:19 | Сообщение # 6 |
Частый гость
Зарегистрирован: 08.10.2014
Группа: Пользователи
Сообщений: 57
Статус: Offline
| Цитата Anton93 ( ) и наконец классика - шифруем участки кода. ключ берем из "необычных" мест, которые в эмуляторе обычно забиваются ерундой. в результате ав никгда не расшифрует в витруалке код программы а необычны места это какие)? хоть примерчик, чтобы знать куда копать
|
|
| |
Волк-1024 | Дата: Пятница, 20.02.2015, 18:39 | Сообщение # 7 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Можно попробовать посовокупляться с SSE4 . Не думаю, что антивирусы умеют его эмулировать.
Цитата HTTqp ( ) а необычны места это какие)? Оверлей например. Между секций можно что-то запихать. В PE заголовок тоже можно.
Pascal, C\C++, Assembler, Python
|
|
| |