Отличить "Виртуальную машину" от основной
|
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
|
|
|
|
|