Идея хорошая, код пока несмотрел, почитал только статью...
Ну и предлагаю тут в теме, немного разобраться в терминах и скажу как я понял эту статью, просто у нас думаю в основном новички, в частности и я, поэтому думаю нужны небольшие уточнения по статье,
сразу извиняюсь, если вопросы будут немного глупые, но уточнение этих вопросов думаю будет полезно, для более глубокого понимания данной статьи и способа, итак, вопросы:
1) Что такое атомы ? Вроде в статье написано сноска "Защита потока данных". Это, вот-это имеется в виду
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
или что-то другое ?
2) Статья рассказывает о том-как проверить эмуляцию API в виртуальной машине ? Ну мне непонятно какие API будут эмулироваться в VM, в статье написанно что простые апи не эмулируются, т.е. как я понял, если я например буду использовать простую апи CreateFile, то она не будет эмулироваться в VM. А в каких случаях будет ?
3)Ну и суть тоже немного непонял, VirtualAlloc() - Это самописная функция ? Вообще по моему представлению аллокатор - это выделение памяти, типо
malloc в си, но динамическое распределение памяти не всегда нужно и часто сам маллок переписывают, поэтому понятие аллокатор достаточно сложное, вот ссылка про аллокаторы, ну это для тех-кто в "танке" и прочитает эту статью:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
В общем можно немного по подробней расписать метод, если не сложно ?
Пока-что я понял вот-что:
Для детекта шифрованный образ PEдекриптуется, выгружается в файл и запускается. Для
примера взят Glyn. Так как не все AV его детектят, то для теста других AV следует взять иной
образ.
Ну это понятно, а дальше:
В начале запустим непосредственно декриптор, но после переноса тела APIв буфер.
Вот тут я уже не понял суть, т.е. мы выделяем память аллокатором VirtualAlloc() ? Далее в эту память помещаем API и исполняем так ?
4)Ну ещё непонятно какие API исполняются таким образом, GetProcAddress() ?
5) Далее что-то я совсем запутался:
Определим число
инструкций, из которых состоит тело API.
Инструкций чего ? GetProcAddress() ? А почему тогда будет разное число инструкций, речь идёт о ассемблерных инструкциях-так ?
6)Далее понял, что если >10-ти инструкций, то будет детект, у АВГ меньше 10-ти...
7)Далее вроде более-менее понятно, а что такое "Функция трассирована через элементарный DYE-цикл." ? Это в коде посмотреть нужно ? Просто пытался загуглить, какая-то муть в выдаче...