Академический Документы
Профессиональный Документы
Культура Документы
Easy“. Detect It Easy или сокращённо DIE это программа для определения типов файлов.
Detect It Easy имеет полностью открытую архитектуру сигнатур. Можно легко добавлять
свои алгоритмы детекта или изменять уже имеющиеся. Это достигается использованием
скриптов. Язык скриптов очень похож на JavaScript и любой человек, понимающий основы
программирования, без труда разберется, как это работает. Возможно кому-то покажется,
что скрипты работают очень медленно. Действительно скрипты работают медленнее
скомпилированного кода, но благодаря хорошей оптимизации Script Engine это не
причиняет особых неудобств. А возможности открытой архитектуры компенсируют
недостатки.
function detect(bShowType,bShowVersion,bShowOptions)
где bShowType, bShowVersion и bShowOptions флаги, которые могут иметь значение 0 или
1. Если сигнатура успешно сработала, то функция detect должна возвратить строку в
соответствии с установленными флагами.
Если все три флага установлены, то для упаковщика UPX возвратится примерно такая
строка:
packer: UPX(3.09)[DLL32]
Например:
Type: Name
В консольной версии это ключи -showoptions и -showversion (по умолчанию оба флага
установлены в 1).
function sum(arg1,arg2)
{
return arg1+arg2;
}
function detect(bShowType,bShowVersion,bShowOptions)
{
var k=1;
var l=3;
var s=sum(k,l);
Как уже говорилось, для редактирования и создания новых сигнатур можно использовать
любой текстовый редактор. Также это осуществимо и средствами самой программы. Для
этого запустим обычную версию DIE и откроем какой-нибудь файл.
Небольшое замечание, для комфортной работы с сигнатурами (особенно с отладчиком)
лучше отключить все пользовательские стили оформления. Для этого переходим на
вкладку «Appearance» меню настроек и переключаем стили на используемые по
умолчанию:
Style WindowsXP
Style sheet default
Затем нажмем кнопку с надписью «S» внизу окна.
6 7 8 9 11 12 13 14
1
10
4
15
18
16 17
Каждый тип файла имеет собственные встроенные функции. Они вызываются как
Список встроенных функций постоянно расширяется и если есть идеи, какие функции
нужно еще добавить, пишите на horsicq@gmail.com
Самой важной из этих функций является “includeScript“. С помощью этой функции можно
вклучать в скрипт другие скрипты.. „$DIEAPP/db“ является папкой по умолчанию для
включения скриптов.
Теперь, в качестве примера, попробуем создать сигнатуру для PDF. Для этого откроем
какой-нибудь файл этого типа. Затем перейдем к редактору сигнатур и нажмем кнопку
«New». Появится окно создания новой сигнатуры.
В качестве имени файла можно задать любую строку, но чтобы потом было легче
разбираться с сигнатурами, лучше чтобы имя файла совпадала с именем определяемой
сигнатуры. То есть если создается для PDF, то и файл лучше всего назвать „PDF“, а не к
примеру „new3“. Если файл с таким именем уже существует, то можно воспользоваться
подчеркиванием или цифрами(_PDF,PDF2). Конечно можно создать сигнатуру которая бы
определяла сразу несколько видов файлов (например PDF и JPG), но лучше делать
отдельные сигнатуры.
Также можно выставить приоритет сканирования. Хотя это и не обязательно. Для этого
имя файла должно иметь вид:
Имя.[приоритет].sg
Например «MicroJoiner.1.sg» или «Microsoft Visual Studio.3.sg». Это иногда бывает полезно
чтобы результат сканирования выводился в определенной последовательности.
Например, информация о компиляторе выводилась раньше информации о линкере.
Чтобы это произошло можно использовать для компиляторов приоритет 3, а для
линкеров приоритет 5.
Format: PDF(1.2)[-]
Так как „options“ будет всегда „-“, можно удалить следующие строки кода
var sOptions="-";
if(bShowOptions)
{
sResult+="["+sOptions+"]";
}
Появится окно:
Запускаем редактор сигнатур для PE-файлов. Для этого нужно открыть любой PE-файл и
нажать кнопку «New»
Затем вводим следующие данные:
}
// End of user's code
function detect(bShowType,bShowVersion,bShowOptions)
{
// Start of user's code
if(PE.comparePE(“55 57 56 52 51 53 E8 ?? ?? ?? ?? 5D 8B D5 81”)) // Наша
peid сигнатура
{
sVersion=" 1.13"; // Версия
sOptions="-"; // Опции неизвестны
bDetected =1; // Устанавливаем в 1, если проверки прошли
успешно
}
// End of user's code
return result(bShowType,bShowVersion,bShowOptions);
}
В некоторых случаях время сканирование файла имеет значение, поэтому иногда полезно
оптимизировать код сигнатур для наилучшего быстродействия. Чтобы узнать скорость
срабатывания отдельных сигнатур для определенного файла нужно в настройках
выставить показ времени сканирования и показ ошибок:
Теперь в лог будет записываться время сканирования каждой сигнатуры по отдельности.
DIE в настояшее время ещо не достиг финальной версии (1.0) поэтому активно
улучшается, если есть новые идеи по улучшению функционала, то пишите на
horsicq@gmail.com