Мы обеспечиваем пользователей по всему миру наиболее эффективным, надежным и экономичным решением из доступных на рынке программного обеспечения.
  • Главная страница R-Studio
  • Техническая документация R-Studio

Создание Собственных Шаблонов


Вы можете сами создавать шаблоны.

Пример шаблона с комментариями для анализа AVI файла.

Синтаксис описания шаблона схож с языком XML. Файлы с шаблонами должны хранится в папке, заданной на вкладке Главная диалогового окна Настройки .

Структура шаблона

Заголовок шаблона

Каждый шаблон начинается со стандартного заголовка

<?xml version="1.0" encoding="utf-8"?>

Элемент template

Каждый шаблон начинается с элемента, где ему присваивается имя, показанное в области анализируемых данных .

Атрибуты :

name  

Определяет имя шаблона, показанное в области анализируемых данных

Пример:

<template name="AVI File LIST">

........

</template>

Элемент signature

Атрибуты :

align <целое положительное число> 

Указывается, если адрес структуры данных выровнен (например, по сектору: 512)

Элемент содержит элементы field, значениями которых являются шестнадцатиричные коды сигнатуры . В атрибуте offset указывается смещение относительно начала записи . Длина поля соответствует числу шестнадцатиричных значений .

Пример:

<signature align="1">

<field offset="0">46 49</field>

<field offset="2">4c 45</field>

</signature>

Элемент section

В данном элементе содержатся все выражения и операции, необходимые шаблону для анализа данных. Имя section показано в области анализируемых данных . На самом деле sections это виртуальные объекты, используемые для группировки логически связанных field s. Sections могут составлять гнездо.

Главная section не показана в области анализируемых данных .

В элементе присутствуют элементы field , которые являются реальными объектами с данными. Имена field показаны в области анализируемых данных вместе с их величинами.

Атрибуты :

name 

Определяет имя шаблона, показанное в области анализируемых данных

Пример:

<section name="JUNK">

 ....

</section>

Список Всех Объектов в Шаблонах

Типы данных (поле field )

integer

Подтипы:

int8

int16

int32

int64

uint8

uint16

uint32

uint64

uintX

Атрибуты:

endian: (be | le | system)  

Необязательный.  По умолчанию: system .

base: (decimal | hex | octal)  

Необязательный. Указывает, в каком виде представлять число. По умолчанию: decimal .

as-offset: <выражение>  

Необязательный. Означает, что это поле является смещением и значение этого смещения вычисляется согласно указанному выражению. Специальная переменная this содержит значение этого поля.

purpose: (offset | rsector |sector | cluster | rcluster)  

Необязательный. Указывает тип результата в выражении as-offset . Если этот атрибут присутствует, то указывать атрибут offset необходимо только в случае, если значение "смещения" должно отличаться от значения этого поля (переменной this ).

rsector и rcluster  говорят о том, что смещения указаны относительно абсолютной позиции начала шаблона.

assigned-template: <Имя Темплейта>  

Указывает имя шаблона, ассоциированного с данным полем. Игнорируется, если не указан атрибут as-offset или purpose .

var: <Имя>  

Необязательный. Позволяет эначению этого поля быть доступным в выражениях по указанному имени.

 

binary

Атрибуты:

display-encoding: (hex | binary)  

Необязательный. По умолчанию: hex .

size: <bytes>  

Обязательный.

 

char

Атрибуты:

size: <bytes>  

Обязательный.

codepage: (ansi | oem | utf8 | utf16)

Необязательный . Указывает используемую кодировку. По умолчанию: ansi .

 

filetime

Показывает время в формате Win32 (64 бита)

 

unixtime

Показывает время в формате Unix (секунды с 01/01/1970)

 

filetime

Показывает время в формате DOS format (дата: hiword, время: loword)

 

bits

Атрибуты:

size: <bytes>  

Обязательный.

pos: <comma separated list of bit positions>  

Обязательный. Указывает позиции битов в блоке данных.

Команды

goto

Переход по указанному смещению (абсолютному или относительному)

Атрибуты:

address: <выражение>  

Указывает абсолютный адрес перехода.

offset: <выражение>  

Указывает относительный адрес перехода.

Всегда указывается только один из этих атрибутов.

 

if

Вычисляет условие, заданное в атрибуте test , и читает указанные внутри этого тэга поля, если условие истинное.

Атрибуты:

test: <выражение>  

Задает условие.

 

repea t

Читает указанные в тэге поля  заданное число раз или пока условие выхода не равно нулю

Атрибуты:

count: <выражение>  

<выражение> вычисляется один раз при входе в блок. Внутренние элементы читаются указанное число раз.

test: <выражение>  

<выражение> условие, вычисляемое при входе в блок. Аналогично C++ конструкции while(...) {} .

test: <выражение>

<выражение> условие, вычисляемое при выходе из блока. Аналогично C++ конструкции do {} while(...) .

 

setvar

Устанавливает значение внутренней переменной. Например, эту команду удобно использовать для сохранения текущего смещения. Значение текущего смещения хранится в предопределенной переменной offset .

Attributes:

var: <строка>  

Указывает имя переменной.

expr: <выражение>  

Указывает выражение, результат вычисления которого будет присвоен переменной.

Выражения

Выражения в шаблонах представляют собой арифметическое выражение с синтаксисом, аналогичном языку C (это касается и приотитета операций).

Поддерживаются следующие операции:

+ - * / & | > < <= >= != == || &&

Предопределенные переменные

offset

Смещение, по которому в настоящий момент осуществляется чтение. В байтах относительно начала шаблона.

 

start_position

Абсолютная позиция начала шаблона. offset + start_position = абсолютное смещение.

 

this

Данная переменная существует только в контексте вычисления выражения ass-offset и является текущим значением поля данных, для которого задано это выражение