1188 lines
50 KiB
HTML
1188 lines
50 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<link rel="Stylesheet" type="text/css" href="default.css" />
|
||
<meta http-equiv="Content-Type" content=
|
||
"text/html; charset=utf-8" />
|
||
|
||
<title>Классы</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>Классы</h1>
|
||
|
||
<p>Встроенный скриптовый язык <a href="http://www.lua.org/about.html">LUA</a> программы VMProtect является
|
||
объектно-ориентированным: по синтаксису, идеалогии и реализации он во многом похож на JavaScript.
|
||
В состав скриптового языка входят как стандартные классы,
|
||
обеспечивающие базовую функциональность, так и специализированные
|
||
классы, предоставляющие доступ к функционалу защиты приложения.
|
||
</p>
|
||
|
||
<h3>Иерархия классов</h3>
|
||
<ul>
|
||
<li><a href="#Core">Core</a><ul>
|
||
<li><a href="#Watermarks">Watermarks</a><ul>
|
||
<li><a href="#Watermark">Watermark</a></li>
|
||
</ul></li>
|
||
<li><a href="#Licenses">Licenses</a><ul>
|
||
<li><a href="#License">License</a></li>
|
||
</ul></li>
|
||
<li><a href="#Files">Files</a><ul>
|
||
<li><a href="#File">File</a></li>
|
||
</ul></li>
|
||
<li><a href="#Folders">Folders</a><ul>
|
||
<li><a href="#Folder">Folder</a></li>
|
||
</ul></li>
|
||
|
||
<li><a href="#PEFile">PEFile</a><ul>
|
||
<li><a href="#PEFormat">PEFormat</a><ul>
|
||
</ul></li>
|
||
<li><a href="#PEArchitecture">PEArchitecture</a><ul>
|
||
<li><a href="#PESegments">PESegments</a><ul>
|
||
<li><a href="#PESegment">PESegment</a></li>
|
||
</ul></li>
|
||
<li><a href="#PESections">PESections</a><ul>
|
||
<li><a href="#PESection">PESection</a></li>
|
||
</ul></li>
|
||
<li><a href="#PEDirectories">PEDirectories</a><ul>
|
||
<li><a href="#PEDirectory">PEDirectory</a></li>
|
||
</ul></li>
|
||
<li><a href="#PEImports">PEImports</a><ul>
|
||
<li><a href="#PEImport">PEImport</a></li>
|
||
</ul></li>
|
||
<li><a href="#PEExports">PEExports</a><ul>
|
||
<li><a href="#PEExport">PEExport</a></li>
|
||
</ul></li>
|
||
<li><a href="#PEResources">PEResources</a><ul>
|
||
<li><a href="#PEResource">PEResource</a></li>
|
||
</ul></li>
|
||
<li><a href="#PEFixups">PEFixups</a><ul>
|
||
<li><a href="#PEFixup">PEFixup</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#MacFile">MacFile</a><ul>
|
||
<li><a href="#MacFormat">MacFormat</a><ul>
|
||
</ul></li>
|
||
<li><a href="#MacArchitecture">MacArchitecture</a><ul>
|
||
<li><a href="#MacSegments">MacSegments</a><ul>
|
||
<li><a href="#MacSegment">MacSegment</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacSections">MacSections</a><ul>
|
||
<li><a href="#MacSection">MacSection</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacCommands">MacCommands</a><ul>
|
||
<li><a href="#MacCommand">MacCommand</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacSymbols">MacSymbols</a><ul>
|
||
<li><a href="#MacSymbol">MacSymbol</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacImports">MacImports</a><ul>
|
||
<li><a href="#MacImport">MacImport</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacExports">MacExports</a><ul>
|
||
<li><a href="#MacExport">MacExport</a></li>
|
||
</ul></li>
|
||
<li><a href="#MacFixups">MacFixups</a><ul>
|
||
<li><a href="#MacFixup">MacFixup</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#MapFunctions">MapFunctions</a><ul>
|
||
<li><a href="#MapFunction">MapFunction</a><ul>
|
||
<li><a href="#References">References</a><ul>
|
||
<li><a href="#Reference">Reference</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#IntelFunctions">IntelFunctions</a><ul>
|
||
<li><a href="#IntelFunction">IntelFunction</a><ul>
|
||
<li><a href="#IntelSegment">IntelSegment</a><ul>
|
||
<li><a href="#IntelRegistr">IntelRegistr</a></li>
|
||
<li><a href="#IntelCommandType">IntelCommandType</a></li>
|
||
<li><a href="#IntelFlag">IntelFlag</a></li>
|
||
<li><a href="#IntelCommand">IntelCommand</a><ul>
|
||
<li><a href="#OperandType">OperandType</a><ul>
|
||
<li><a href="#IntelOperand">IntelOperand</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#CommandLinks">CommandLinks</a><ul>
|
||
<li><a href="#LinkType">LinkType</a><ul>
|
||
<li><a href="#CommandLink">CommandLink</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#FFILibrary">FFILibrary</a><ul>
|
||
<li><a href="#FFIFunction">FFIFunction</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
|
||
<h3>Ядро</h3>
|
||
|
||
<p id="ProjectOption">Опции проекта:</p>
|
||
<pre class="code">
|
||
enum ProjectOption {
|
||
None,
|
||
Pack,
|
||
ImportProtection,
|
||
MemoryProtection,
|
||
ResourceProtection,
|
||
CheckDebugger,
|
||
CheckKernelDebugger,
|
||
CheckVirtualMachine,
|
||
StripFixups,
|
||
StripDebugInfo,
|
||
DebugMode
|
||
}
|
||
</pre>
|
||
|
||
<p id="Core">Класс для работы с ядром VMProtect:</p>
|
||
<pre class="code" id="Core">
|
||
class Core {
|
||
public:
|
||
string projectFileName(); // возращает имя проекта
|
||
void saveProject(); // сохраняет проект
|
||
string inputFileName(); // возвращает имя исходного файла для текущего проекта
|
||
string outputFileName(); // возращает имя выходного файла для текущего проекта
|
||
void setOutputFileName(string name); // устанавливает имя выходного файла для текущего проекта
|
||
string watermarkName(); // возвращает имя водяного знака из текущего проекта
|
||
void setWatermarkName(string name); // устанавливает имя водяного знака для текущего проекта
|
||
int options(); // возвращает <a href="#ProjectOption">опции</a> для текущего проекта
|
||
void setOptions(int options); // устанавливает опции для текущего проекта
|
||
string vmSectionName(); // возвращает имя сегмента ВМ для текущего проекта
|
||
void setVMSectionName(); // устанавливает имя сегмента ВМ для текущего проекта
|
||
<a href="#Licenses">Licenses</a> licenses(); // возвращает список лицензий для текущего проекта
|
||
<a href="#Files">Files</a> files(); // возвращает список файлов для текущего проекта
|
||
<a href="#Watermarks">Watermarks</a> watermarks(); // возвращает список водяных знаков
|
||
<a href="#PEFile">PEFile</a>/<a href="#MacFile">MacFile</a> inputFile(); // возвращает исходный файл
|
||
<a href="#PEFile">PEFile</a>/<a href="#MacFile">MacFile</a> outputFile(); // возвращает выходной файл
|
||
<a href="#PEArchitecture">PEArchitecture</a>/<a href="#MacArchitecture">MacArchitecture</a> inputArchitecture(); // возвращает исходную архитектуру
|
||
<a href="#PEArchitecture">PEArchitecture</a>/<a href="#MacArchitecture">MacArchitecture</a> outputArchitecture(); // возвращает выходную архитектуру
|
||
};
|
||
</pre>
|
||
|
||
<h3>Водяные знаки</h3>
|
||
|
||
<p id="Watermarks">Класс для работы со списком <a href="watermarks.htm">водяных знаков</a>:</p>
|
||
<pre class="code">
|
||
class Watermarks {
|
||
public:
|
||
<a href="#Watermark">Watermark</a> item(int index); // возвращает водяной знак с индексом index
|
||
int count(); // возвращает количество водяных знаков в списке
|
||
<a href="#Watermark">Watermark</a> itemByName(string name); // возвращает водяной знак с именем name
|
||
<a href="#Watermark">Watermark</a> add(string name, string value); // добавляет водяной знак с именем name и значением value
|
||
}
|
||
</pre>
|
||
|
||
<p id="Watermark">Класс для работы с водяным знаком:</p>
|
||
<pre class="code">
|
||
class Watermark {
|
||
public:
|
||
string name(); // возвращает имя водяного знака
|
||
string value(); // возвращает значение водяного знака
|
||
bool blocked(); // возвращает признак "Заблокирован"
|
||
void setBlocked(bool value); // устанавливает признак "Заблокирован"
|
||
}
|
||
</pre>
|
||
|
||
<h3>Лицензии</h3>
|
||
|
||
<p id="Licenses">Класс для работы со списком <a href="manager/licenses.htm">лицензий</a>:</p>
|
||
<pre class="code">
|
||
class Licenses {
|
||
public:
|
||
int keyLength(); // возвращает размер ключа
|
||
string publicExp(); // возвращает публичную экспоненту
|
||
string privateExp(); // возвращает приватную экспоненту
|
||
string modulus(); // возвращает модулус
|
||
<a href="#License">License</a> item(int index); // возвращает лицензию с индексом index
|
||
int count(); // возвращает количество лицензий в списке
|
||
}
|
||
</pre>
|
||
|
||
<p id="License">Класс для работы с лицензией:</p>
|
||
<pre class="code">
|
||
class License {
|
||
public:
|
||
string date(string format = "%c"); // возвращает дату лицензии
|
||
string customerName(); // возвращает имя владельца лицензии
|
||
string customerEmail(); // возвращает адрес электронной почты владельца лицензии
|
||
string orderRef(); // возвращает номер заказа, по которому приобретена лицензия
|
||
string comments(); // возвращает комментарии к лицензии
|
||
string serialNumber(); // возвращает серийный номер лицензии
|
||
bool blocked(); // возвращает признак "Заблокирован"
|
||
void setBlocked(bool value); // устанавливает признак "Заблокирован"
|
||
}
|
||
</pre>
|
||
|
||
<h3>Файлы</h3>
|
||
|
||
<p id="Files">Класс для работы со списком <a href="project_files.htm">файлов</a>:</p>
|
||
<pre class="code">
|
||
class Files {
|
||
public:
|
||
<a href="#File">File</a> item(int index); // возвращает файл с индексом index
|
||
int count(); // возвращает количество файлов в списке
|
||
}
|
||
</pre>
|
||
|
||
<p id="File">Класс для работы с <a href="project_files.htm">файлом</a>:</p>
|
||
<pre class="code">
|
||
class File {
|
||
public:
|
||
string name(); // возвращает название файла
|
||
string fileName(); // возвращает имя файла
|
||
int options(); // возвращает опции
|
||
void setName(string name); // устанавливает название файла
|
||
void setFileName(string name); // устанавливает имя файла
|
||
void setOptions(); // устанавлиает опции
|
||
}
|
||
</pre>
|
||
|
||
<h3>Папки</h3>
|
||
|
||
<p id="Folders">Класс для работы с пользовательскими папками:</p>
|
||
<pre class="code">
|
||
class Folders {
|
||
public:
|
||
int count(); // возвращает количество папок в списке
|
||
<a href="#Folder">Folder</a> item(int index); // возвращает папку с индексом index
|
||
<a href="#Folder">Folder</a> add(string name); // добавляет новую папку
|
||
void clear(); // очищает список
|
||
};
|
||
</pre>
|
||
|
||
<p id="Folder">Класс для работы с пользовательской папкой:</p>
|
||
<pre class="code" id="Folder">
|
||
class Folder {
|
||
public:
|
||
int count(); // возвращает количество подпапок
|
||
<a href="#Folder">Folder</a> item(int index); // возвращает подпапку с индексом index
|
||
<a href="#Folder">Folder</a> add(string name); // добавляет новую подпапку
|
||
string name(); // возвращает имя папки
|
||
void clear(); // очищает список подпапок
|
||
void destroy(); // уничтожает папку и все дочерние подпапки
|
||
};
|
||
</pre>
|
||
|
||
<h3>PE файлы</h3>
|
||
|
||
<p id="PEFormat">Константы для работы с PE форматом:</p>
|
||
<pre class="code">
|
||
enum PEFormat {
|
||
// Directory Entries
|
||
IMAGE_DIRECTORY_ENTRY_EXPORT,
|
||
IMAGE_DIRECTORY_ENTRY_IMPORT,
|
||
IMAGE_DIRECTORY_ENTRY_RESOURCE,
|
||
IMAGE_DIRECTORY_ENTRY_EXCEPTION,
|
||
IMAGE_DIRECTORY_ENTRY_SECURITY,
|
||
IMAGE_DIRECTORY_ENTRY_BASERELOC,
|
||
IMAGE_DIRECTORY_ENTRY_DEBUG,
|
||
IMAGE_DIRECTORY_ENTRY_ARCHITECTURE,
|
||
IMAGE_DIRECTORY_ENTRY_TLS,
|
||
IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG,
|
||
IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT,
|
||
IMAGE_DIRECTORY_ENTRY_IAT,
|
||
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT,
|
||
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR,
|
||
// Section characteristics
|
||
IMAGE_SCN_CNT_CODE,
|
||
IMAGE_SCN_CNT_INITIALIZED_DATA,
|
||
IMAGE_SCN_CNT_UNINITIALIZED_DATA,
|
||
IMAGE_SCN_MEM_DISCARDABLE,
|
||
IMAGE_SCN_MEM_NOT_CACHED,
|
||
IMAGE_SCN_MEM_NOT_PAGED,
|
||
IMAGE_SCN_MEM_SHARED,
|
||
IMAGE_SCN_MEM_EXECUTE,
|
||
IMAGE_SCN_MEM_READ,
|
||
IMAGE_SCN_MEM_WRITE,
|
||
// Resource types
|
||
RT_CURSOR,
|
||
RT_BITMAP,
|
||
RT_ICON,
|
||
RT_MENU,
|
||
RT_DIALOG,
|
||
RT_STRING,
|
||
RT_FONTDIR,
|
||
RT_FONT,
|
||
RT_ACCELERATOR,
|
||
RT_RCDATA,
|
||
RT_MESSAGETABLE,
|
||
RT_GROUP_CURSOR,
|
||
RT_GROUP_ICON,
|
||
RT_VERSION,
|
||
RT_DLGINCLUDE,
|
||
RT_PLUGPLAY,
|
||
RT_VXD,
|
||
RT_ANICURSOR,
|
||
RT_ANIICON,
|
||
RT_HTML,
|
||
RT_MANIFEST,
|
||
RT_DLGINIT,
|
||
RT_TOOLBAR
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEFile">Класс для работы с PE файлом:</p>
|
||
<pre class="code">
|
||
class PEFile {
|
||
public:
|
||
string name(); // возвращает имя файла
|
||
string format(); // возвращает имя формата "PE"
|
||
uint64 size(); // возвращает размер файла
|
||
int count(); // возвращает количество архитектур в списке
|
||
<a href="#PEArchitecture">PEArchitecture</a> item(int index); // возвращает архитектуру с индексом index
|
||
uint64 seek(uint64 offset); // устанавливает файловую позицию
|
||
uint64 tell(); // возвращает файловую позицию
|
||
int write(string buffer); // записывает буфер в файл
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEArchitecture">Класс для работы с PE архитектурой:</p>
|
||
<pre class="code">
|
||
class PEArchitecture {
|
||
public:
|
||
string name(); // возвращает имя архитектуры
|
||
<a href="#PEFile">PEFile</a> file(); // возвращает родительский файл
|
||
uint64 entryPoint(); // возвращает стартовый адрес
|
||
uint64 imageBase(); // возвращает стартовый адрес
|
||
<a href="#OperandSize">OperandSize</a> cpuAddressSize(); // возвращает битность архитектуры
|
||
uint64 size(); // возвращает размер архитектуры
|
||
<a href="#PESegments">PESegments</a> segments(); // возвращает список сегментов
|
||
<a href="#PESections">PESections</a> sections(); // возвращает список секций
|
||
<a href="#PEDirectories">PEDirectories</a> directories(); // возвращает список директорий
|
||
<a href="#PEImports">PEImports</a> imports(); // возвращает список импортируемых библиотек
|
||
<a href="#PEExports">PEExports</a> exports(); // возвращает список экспортируемых функций
|
||
<a href="#PEResources">PEResources</a> resources(); // возвращает список ресурсов
|
||
<a href="#PEFixups">PEFixups</a> fixups(); // возвращает список настраиваемых элементов
|
||
<a href="#MapFunctions">MapFunctions</a> mapFunctions(); // возвращает список доступных для защиты функций
|
||
<a href="#IntelFunctions">IntelFunctions</a> functions(); // возвращает список защищаемых функций
|
||
bool addressSeek(uint64 address); // устанавливает файловую позицию
|
||
uint64 seek(uint64 offset); // устанавливает файловую позицию
|
||
uint64 tell(); // возвращает файловую позицию
|
||
int write(string buffer); // записывает буфер в файл
|
||
};
|
||
</pre>
|
||
|
||
<p id="PESegments">Класс для работы cо списком сегментов для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PESegments {
|
||
public:
|
||
<a href="#PESegment">PESegment</a> item(int index); // возвращает сегмент с индексом index
|
||
int count(); // возвращает количество сегментов в списке
|
||
<a href="#PESegment">PESegment</a> itemByAddress(uint64 address); // возвращает сегмент с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="PESegment">Класс для работы c сегментом для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PESegment {
|
||
public:
|
||
uint64 address(); // возвращает адрес сегмента
|
||
string name(); // возвращает имя сегмента
|
||
uint64 size(); // возвращает размер сегмента
|
||
int physicalOffset(); // возвращает файловую позицию сегмента
|
||
int physicalSize(); // возвращает файловый размер сегмента
|
||
int flags(); // возвращает флаги сегмента
|
||
bool excludedFromPacking(); // возвращает признак "Исключен из упаковки"
|
||
void setName(string name); // устанавливает имя сегмента
|
||
};
|
||
</pre>
|
||
|
||
<p id="PESections">Класс для работы cо списком секций для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PESections {
|
||
public:
|
||
<a href="#PESection">PESection</a> item(int index); // возвращает секцию с индексом index
|
||
int count(); // возвращает количество секций в списке
|
||
<a href="#PESection">PESection</a> itemByAddress(uint64 address); // возвращает секцию с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="PESection">Класс для работы с секцией для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PESection {
|
||
public:
|
||
uint64 address(); // возвращает адрес секции
|
||
string name(); // возвращает имя секции
|
||
uint64 size(); // возвращает размер секции
|
||
int offset(); // возвращает файловую позицию секции
|
||
<a href="#PESegment">PESegment</a> segment(); // возвращает родительский сегмент
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEDirectories">Класс для работы с директориями для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEDirectories {
|
||
public:
|
||
<a href="#PEDirectory">PEDirectory</a> item(int index); // возвращает директорию с индексом index
|
||
int count(); // возвращает количество директорий в списке
|
||
<a href="#PEDirectory">PEDirectory</a> itemByType(int type); // возвращает директорию с типом type
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEDirectory">Класс для работы с директорией для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEDirectory {
|
||
public:
|
||
uint64 address(); // возвращает адрес директории
|
||
string name(); // возвращает имя директории
|
||
uint64 size(); // возвращает размер директории
|
||
int type(); // возвращает тип директории
|
||
void setAddress(uint64 address); // устанавливает адрес директории
|
||
void setSize(int size); // устанавливает размер директории
|
||
void clear(); // очищает адрес и размер директории
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEImports">Класс для работы со списком импортируемых библиотек для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEImports {
|
||
public:
|
||
<a href="#PEImport">PEImport</a> item(int index); // возвращает библиотеку с индексом index
|
||
int count(); // возвращает количество библиотек в списке
|
||
<a href="#PEImport">PEImport</a> itemByName(string name); // возвращает библиотеку с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEImport">Класс для работы с импортируемой библиотекой для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEImport {
|
||
public:
|
||
string name(); // возвращает имя библиотеки
|
||
<a href="#PEImportFunction">PEImportFunction</a> item(int index); // возвращает импортируемую функцию с индексом index
|
||
int count(); // возвращает количество импортируемых функций
|
||
void setName(string name); // устанавливает имя библиотеки
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEImportFunction">Класс для работы с импортируемой функцией для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEImportFunction {
|
||
public:
|
||
uint64 address(); // возвращает адрес ячейки, в которую записывается адрес импортируемой функции
|
||
string name(); // возвращает имя импортируемой функции
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEExports">Класс для работы со списком экспортируемых функций для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEExports {
|
||
public:
|
||
string name(); // возвращает имя библиотеки
|
||
void setName(string name); // устанавливает имя библиотеки
|
||
<a href="#PEExport">PEExport</a> item(int index); // возвращает экспортируемую функцию с индексом index
|
||
int count(); // возвращает количество экспортируемых функций в списке
|
||
void clear(); // очищает список
|
||
<a href="#PEExport">PEExport</a> itemByAddress(uint64 address); // возвращает экспортируемую функцию с адресом address
|
||
<a href="#PEExport">PEExport</a> itemByName(string name); // возвращает экспортируемую функцию с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEExport">Класс для работы с экспортируемой функцией для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEExport {
|
||
public:
|
||
uint64 address(); // возвращает адрес экспортируемой функции
|
||
string name(); // возвращает имя экспортируемой функции
|
||
void setName(string name); // устанавливает имя экспортируемой функции
|
||
int ordinal(); // возвращает ординал экспортируемой функции
|
||
string forwardedName(); // возвращает имя функции, на которую перенаправлена экспортируемая функция
|
||
void destroy(); // уничтожает экспортируемую функцию
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEResources">Класс для работы со списком ресурсов для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEResources {
|
||
public:
|
||
<a href="#PEResource">PEResource</a> item(int index); // возвращает ресурс с индексом index
|
||
int count(); // возвращает количество ресурсов в списке
|
||
void clear(); // очищает список
|
||
<a href="#PEResource">PEResource</a> itemByType(int type); // возвращает ресурс с типом type
|
||
<a href="#PEResource">PEResource</a> itemByName(string name); // возвращает ресурс с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEResource">Класс для работы с ресурсом для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEResource {
|
||
public:
|
||
<a href="#PEResource">PEResource</a> item(int index); // возвращает ресурс с индексом index
|
||
int count(); // возвращает количество ресурсов в списке
|
||
void clear(); // очищает список
|
||
uint64 address(); // возвращает адрес ресурса
|
||
int size(); // возвращает размер ресурса
|
||
string name(); // возвращает имя ресурса
|
||
int type(); // возвращает тип ресурса
|
||
bool isDirectory(); // возвращает признак "Директория"
|
||
void destroy(); // уничтожает ресурс
|
||
<a href="#PEResource">PEResource</a> itemByName(string name); // возвращает ресурс с именем name
|
||
bool excludedFromPacking(); // возвращает признак "Исключен из упаковки"
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEFixups">Класс для работы со списком настраиваемых элементов для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEFixups {
|
||
public:
|
||
<a href="#PEFixup">PEFixup</a> item(int index); // возвращает элемент с индексом index
|
||
int count(); // возвращает количество элементов в списке
|
||
<a href="#PEFixup">PEFixup</a> itemByAddress(uint64 address); // возвращает элемент с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="PEFixup">Класс для работы с настраиваемым элементом для PE архитектуры:</p>
|
||
<pre class="code">
|
||
class PEFixup {
|
||
public:
|
||
uint64 address(); // возвращает адрес элемента
|
||
};
|
||
</pre>
|
||
|
||
<h3>Mach-O файлы</h3>
|
||
|
||
<p id="MacFormat">Константы для работы с Mach-O форматом:</p>
|
||
<pre class="code">
|
||
enum MacFormat {
|
||
// Load Command Types
|
||
LC_SEGMENT,
|
||
LC_SYMTAB,
|
||
LC_SYMSEG,
|
||
LC_THREAD,
|
||
LC_UNIXTHREAD,
|
||
LC_LOADFVMLIB,
|
||
LC_IDFVMLIB,
|
||
LC_IDENT,
|
||
LC_FVMFILE,
|
||
LC_PREPAGE,
|
||
LC_DYSYMTAB,
|
||
LC_LOAD_DYLIB,
|
||
LC_ID_DYLIB,
|
||
LC_LOAD_DYLINKER,
|
||
LC_PREBOUND_DYLIB,
|
||
LC_ROUTINES,
|
||
LC_SUB_FRAMEWORK,
|
||
LC_SUB_UMBRELLA,
|
||
LC_SUB_CLIENT,
|
||
LC_SUB_LIBRARY,
|
||
LC_TWOLEVEL_HINTS,
|
||
LC_PREBIND_CKSUM,
|
||
LC_LOAD_WEAK_DYLIB,
|
||
LC_SEGMENT_64,
|
||
LC_ROUTINES_64,
|
||
LC_UUID,
|
||
LC_RPATH,
|
||
LC_CODE_SIGNATURE,
|
||
LC_SEGMENT_SPLIT_INFO,
|
||
LC_REEXPORT_DYLIB,
|
||
LC_LAZY_LOAD_DYLIB,
|
||
LC_ENCRYPTION_INFO,
|
||
LC_DYLD_INFO,
|
||
LC_DYLD_INFO_ONLY,
|
||
LC_LOAD_UPWARD_DYLIB,
|
||
LC_VERSION_MIN_MACOSX,
|
||
// Section Types
|
||
SECTION_TYPE,
|
||
SECTION_ATTRIBUTES,
|
||
S_REGULAR,
|
||
S_ZEROFILL,
|
||
S_CSTRING_LITERALS,
|
||
S_4BYTE_LITERALS,
|
||
S_8BYTE_LITERALS,
|
||
S_LITERAL_POINTERS,
|
||
S_NON_LAZY_SYMBOL_POINTERS,
|
||
S_LAZY_SYMBOL_POINTERS,
|
||
S_SYMBOL_STUBS,
|
||
S_MOD_INIT_FUNC_POINTERS,
|
||
S_MOD_TERM_FUNC_POINTERS,
|
||
S_COALESCED,
|
||
S_GB_ZEROFILL,
|
||
S_INTERPOSING,
|
||
S_16BYTE_LITERALS,
|
||
S_DTRACE_DOF,
|
||
S_LAZY_DYLIB_SYMBOL_POINTERS,
|
||
SECTION_ATTRIBUTES_USR,
|
||
S_ATTR_PURE_INSTRUCTIONS,
|
||
S_ATTR_NO_TOC,
|
||
S_ATTR_STRIP_STATIC_SYMS,
|
||
S_ATTR_NO_DEAD_STRIP,
|
||
S_ATTR_LIVE_SUPPORT,
|
||
S_ATTR_SELF_MODIFYING_CODE,
|
||
S_ATTR_DEBUG,
|
||
SECTION_ATTRIBUTES_SYS,
|
||
S_ATTR_SOME_INSTRUCTIONS,
|
||
S_ATTR_EXT_RELOC,
|
||
S_ATTR_LOC_RELOC
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacFile">Класс для работы с Mach-O файлом:</p>
|
||
<pre class="code">
|
||
class MacFile {
|
||
public:
|
||
string name(); // возвращает имя файла
|
||
string format(); // возвращает имя формата "Mach-O"
|
||
uint64 size(); // возвращает размер файла
|
||
int count(); // возвращает количество архитектур в списке
|
||
<a href="#MacArchitecture">MacArchitecture</a> item(int index); // возвращает архитектуру с индексом index
|
||
uint64 seek(uint64 offset); // устанавливает файловую позицию
|
||
uint64 tell(); // возвращает файловую позицию
|
||
int write(string buffer); // записывает буфер в файл
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacArchitecture">Класс для работы с Mach-O архитектурой:</p>
|
||
<pre class="code">
|
||
class MacArchitecture {
|
||
public:
|
||
string name(); // возвращает имя архитектуры
|
||
<a href="#MacFile">MacFile</a> file(); // возвращает родительский файл
|
||
uint64 entryPoint(); // возвращает стартовый адрес
|
||
<a href="#OperandSize">OperandSize</a> cpuAddressSize(); // возвращает битность архитектуры
|
||
uint64 size(); // возвращает размер архитектуры
|
||
<a href="#MacSegments">MacSegments</a> segments(); // возвращает список сегментов
|
||
<a href="#MacSections">MacSections</a> sections(); // возвращает список секций
|
||
<a href="#MacCommands">MacCommands</a> commands(); // возвращает список загрузочных команд
|
||
<a href="#MacSymbols">MacSymbols</a> symbols(); // возвращает список символов
|
||
<a href="#MacImports">MacImports</a> imports(); // возвращает список импортируемых библиотек
|
||
<a href="#MacExports">MacExports</a> exports(); // возвращает список экспортируемых функций
|
||
<a href="#MacFixups">MacFixups</a> fixups(); // возвращает список настраиваемых элементов
|
||
<a href="#MapFunctions">MapFunctions</a> mapFunctions(); // возвращает список доступных для защиты функций
|
||
<a href="#IntelFunctions">IntelFunctions</a> functions(); // возвращает список защищаемых функций
|
||
bool addressSeek(uint64 address); // устанавливает файловую позицию
|
||
uint64 seek(uint64 offset); // устанавливает файловую позицию
|
||
uint64 tell(); // возвращает файловую позицию
|
||
int write(string buffer); // записывает буфер в файл
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSegments">Класс для работы cо списком сегментов для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacSegments {
|
||
public:
|
||
<a href="#MacSegment">MacSegment</a> item(int index); // возвращает сегмент с индексом index
|
||
int count(); // возвращает количество сегментов в списке
|
||
<a href="#MacSegment">MacSegment</a> itemByAddress(); // возвращает сегмент с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSegment">Класс для работы c сегментом для Mach-O архитектуры:</p>
|
||
<pre class="code" id="MacSegment">
|
||
class MacSegment {
|
||
public:
|
||
uint64 address(); // возвращает адрес сегмента
|
||
string name(); // возвращает имя сегмента
|
||
uint64 size(); // возвращает размер сегмента
|
||
int physicalOffset(); // возвращает файловую позицию сегмента
|
||
int physicalSize(); // возвращает файловый размер сегмента
|
||
int flags(); // возвращает флаги сегмента
|
||
bool excludedFromPacking(); // возвращает признак "Исключен из упаковки"
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSections">Класс для работы cо списком секций для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacSections {
|
||
public:
|
||
<a href="#MacSection">MacSection</a> item(int index); // возвращает секцию с индексом index
|
||
int count(); // возвращает количество секций в списке
|
||
<a href="#MacSection">MacSection</a> itemByAddress(uint64 address); // возвращает секцию с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSection">Класс для работы c секцией для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacSection {
|
||
public:
|
||
uint64 address(); // возвращает адрес секции
|
||
string name(); // возвращает имя секции
|
||
uint64 size(); // возвращает размер секции
|
||
int offset(); // возвращает файловую позицию секции
|
||
<a href="#MacSegment">MacSegment</a> segment(); // возвращает родительский сегмент
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacCommands">Класс для работы cо списком загрузочных команд для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacCommands {
|
||
public:
|
||
<a href="#MacCommand">MacCommand</a> item(int index); // возвращает команду с индексом index
|
||
int count(); // возвращает количество команд в списке
|
||
<a href="#MacCommand">MacCommand</a> itemByType(int type); // возвращает команду с типом type
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacCommand">Класс для работы c загрузочной командой для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacCommand {
|
||
public:
|
||
uint64 address(); // возвращает адрес команды
|
||
int type(); // возвращает тип команды
|
||
string name(); // возвращает имя команды
|
||
int size(); // возвращает размер команды
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSymbols">Класс для работы cо списком символов для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacSymbols {
|
||
public:
|
||
<a href="#MacSymbol">MacSymbol</a> item(int index); // возвращает символ с индексом index
|
||
int count(); // возвращает количество символов в списке
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacSymbol">Класс для работы c символом для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacSymbol {
|
||
public:
|
||
uint64 value(); // возвращает значение символа
|
||
string name(); // возвращает имя символа
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacImports">Класс для работы со списком импортируемых библиотек для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacImports {
|
||
public:
|
||
<a href="#MacImport">MacImport</a> item(int index); // возвращает импортируемую библиотеку с индексом index
|
||
int count(); // возвращает количество импортируемых библиотек в списке
|
||
<a href="#MacImport">MacImport</a> itemByName(string name); // возвращает импортируемую библиотеку с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacImport">Класс для работы с импортируемой библиотекой для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacImport {
|
||
public:
|
||
string name(); // возвращает имя импортируемой библиотеки
|
||
<a href="#MacImportFunction">MacImportFunction</a> item(int index); // возвращает импортируемую функцию с индексом index
|
||
int count(); // возвращает количество импортируемых функций в списке
|
||
void setName(string name); // устанавливает имя импортируемой библиотеки
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacImportFunction">Класс для работы с импортируемой функцией для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacImportFunction {
|
||
public:
|
||
uint64 address(); // возвращает адрес ячейки, в которую записывается адрес импортируемой функции
|
||
string name(); // возвращает имя импортируемой функции
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacExports">Класс для работы со списком экспортируемых функций для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacExports {
|
||
public:
|
||
string name(); // возвращает имя библиотеки
|
||
<a href="#MacExport">MacExport</a> item(); // возвращает экспортируемую функцию с индексом index
|
||
int count(); // возвращает количество экспортируемых функций в списке
|
||
void clear(); // очищает список
|
||
<a href="#MacExport">MacExport</a> itemByAddress(uint64 address); // возвращает экспортируемую функцию с адресом address
|
||
<a href="#MacExport">MacExport</a> itemByName(string name); // возвращает экспортируемую функцию с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacExport">Класс для работы с экспортируемой функцией для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacExport {
|
||
public:
|
||
uint64 address(); // возвращает адрес экспортируемой функции
|
||
string name(); // возвращает имя экспортируемой функции
|
||
string forwardedName(); // возвращает имя функции, на которую перенаправлена экспортируемая функция
|
||
void destroy(); // уничтожает экспортируемую функцию
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacFixups">Класс для работы со списком настраиваемых элементов для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacFixups {
|
||
public:
|
||
<a href="#MacFixup">MacFixup</a> item(int index); // возвращает элемент с индексом index
|
||
int count(); // возвращает количество элементов в списке
|
||
<a href="#MacFixup">MacFixup</a> itemByAddress(uint64 address); // возвращает элемент с адресом address
|
||
};
|
||
</pre>
|
||
|
||
<p id="MacFixup">Класс для работы с настраиваемым элементом для Mach-O архитектуры:</p>
|
||
<pre class="code">
|
||
class MacFixup {
|
||
public:
|
||
uint64 address(); // возвращает адрес элемента
|
||
};
|
||
</pre>
|
||
|
||
<h3>Функции</h3>
|
||
|
||
<p id="MapFunctions">Класс для работы со списком функций:</p>
|
||
<pre class="code">
|
||
class MapFunctions {
|
||
public:
|
||
<a href="#MapFunction">MapFunction</a> item(int index); // возвращает функцию с индексом index
|
||
int count(); // возвращает количество функций в списке
|
||
<a href="#MapFunction">MapFunction</a> itemByAddress(uint64 address); // возвращает функцию с адресом address
|
||
<a href="#MapFunction">MapFunction</a> itemByName(string name); // возвращает функцию с именем name
|
||
};
|
||
</pre>
|
||
|
||
<p id="ObjectType">Типы функций:</p>
|
||
<pre class="code">
|
||
enum ObjectType {
|
||
Unknown,
|
||
Code,
|
||
Data,
|
||
Export,
|
||
Marker,
|
||
APIMarker,
|
||
Import,
|
||
String
|
||
};
|
||
</pre>
|
||
|
||
<p id="MapFunction">Класс для работы с функцией:</p>
|
||
<pre class="code">
|
||
class MapFunction {
|
||
public:
|
||
uint64 address(); // возвращает адрес функции
|
||
string name(); // возвращает имя функции
|
||
<a href="#ObjectType">ObjectType</a> type(); // возвращает тип функции
|
||
<a href="#References">References</a> references(); // возвращает список ссылок
|
||
};
|
||
</pre>
|
||
|
||
<p id="References">Класс для работы со списком ссылок:</p>
|
||
<pre class="code">
|
||
class References {
|
||
public:
|
||
<a href="#Reference">Reference</a> item(int index); // возвращает ссылку с индексом index
|
||
int count(); // возвращает количество ссылок в списке
|
||
};
|
||
</pre>
|
||
|
||
<p id="Reference">Класс для работы с ссылкой:</p>
|
||
<pre class="code">
|
||
class Reference {
|
||
public:
|
||
uint64 address(); // возвращает адрес команды
|
||
uint64 operandAddress(); // возвращает адрес ссылки
|
||
};
|
||
</pre>
|
||
|
||
<h3>Функции Intel</h3>
|
||
|
||
<p id="IntelFunctions">Класс для работы со списком функций Intel:</p>
|
||
<pre class="code">
|
||
class IntelFunctions {
|
||
public:
|
||
<a href="#IntelFunction">IntelFunction</a> item(int index); // возвращает функцию с индексом index
|
||
int count(); // возвращает количество функций в списке
|
||
void clear(); // очищает список
|
||
<a href="#IntelFunction">IntelFunction</a> itemByAddress(uint64 address); // возвращает функцию с адресом address
|
||
<a href="#IntelFunction">IntelFunction</a> itemByName(string name); // возвращает функцию с именем name
|
||
<a href="#IntelFunction">IntelFunction</a> addByAddress(uint64 address, <a href="#CompilationType">CompilationType</a> type = ctVirtualization);
|
||
// добавляет новую функцию с адресом address и типом компиляции type
|
||
};
|
||
</pre>
|
||
|
||
<p id="CompilationType">Типы компиляции:</p>
|
||
<pre class="code">
|
||
enum CompilationType {
|
||
None,
|
||
Virtualization,
|
||
Mutation,
|
||
Ultra
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelFunction">Класс для работы с функцией Intel:</p>
|
||
<pre class="code">
|
||
class IntelFunction {
|
||
public:
|
||
uint64 address(); // возвращает адрес функции
|
||
string name(); // возвращает имя функции
|
||
<a href="#ObjectType">ObjectType</a> type(); // возвращает тип функции
|
||
<a href="#IntelCommand">IntelCommand</a> item(int index); // возвращает команду с индексом index
|
||
int count(); // возвращает количество команд в списке
|
||
<a href="#CompilationType">CompilationType</a> compilationType(); // возвращает тип компиляции
|
||
void setCompilationType(<a href="#CompilationType">CompilationType</a> value); // устанавливает тип компиляции
|
||
<a href="#CommandLinks">CommandLinks</a> links(); // возвращает список связей
|
||
<a href="#IntelCommand">IntelCommand</a> itemByAddress(uint64 address); // возвращает команду с адресом address
|
||
void destroy(); // уничтожает функцию
|
||
<a href="#Folder">Folder</a> folder(); // возвращает пользовательскую папку
|
||
void setFolder(<a href="#Folder">Folder</a> folder); // устанавливает пользовательскую папку
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelCommandType">Типы команд Intel:</p>
|
||
<pre class="code">
|
||
enum IntelCommandType {
|
||
Unknown, Push, Pop, Mov, Add, Xor, Test, Lea, Ud0, Ret, Ssh, Crc, Call, Jmp,
|
||
Fstsw, Fsqrt, Fchs, Fstcw, Fldcw, Fild, Fist, Fistp, Fld, Fstp, Fst, Fadd,
|
||
Fsub, Fsubr, Fisub, Fisubr, Fdiv, Fcomp, Fmul, Repe, Repne, Rep, DB, DW, DD, DQ,
|
||
Movs, Cmps, Scas, Movzx, Movsx, Inc, Dec, Les, Lds, Lfs, Lgs, Lss, Xadd, Bswap,
|
||
Jxx, And, Sub, Stos, Lods, Nop, Xchg, Pushf, Popf, Sahf, Lahf, Shl, Shr, Sal,
|
||
Sar, Rcl, Rcr, Rol, Ror, Shld, Shrd, Loope, Loopne, Loop, Jcxz, In, Ins, Out,
|
||
Outs, Wait, Cbw, Cwde, Cdqe, Cwd, Cdq, Cqo, Clc, Stc, Cli, Sti, Cld, Std, Not,
|
||
Neg, Div, Imul, Idiv, Mul, Or, Adc, Cmp, Sbb, Pusha, Popa, Clflush, Pause,
|
||
Bound, Arpl, Daa, Das, Aaa, Aam, Aad, Aas, Enter, Leave, Int, Into, Iret, Set,
|
||
Cmov, Addpd, Addps, Addsd, Addss, Andpd, Andps, Andnpd, Andnps, Cmppd, Cmpps,
|
||
Cmpsd, Cmpss, Comisd, Comiss, Cvtdq2ps, Cvtpd2dq, Cvtdq2pd, Cvtpd2pi, Cvtps2pi,
|
||
Cvtpd2ps, Cvtps2pd, Cvtpi2pd, Cvtpi2ps, Cvtps2dq, Cvtsd2si, Cvtss2si, Cvtsd2ss,
|
||
Cvtss2sd, Cvttpd2pi, Cvttps2pi, Cvttpd2dq, Cvttps2dq, Cvttsd2si, Cvttss2si,
|
||
Divpd, Divps, Divsd, Divss, Maxpd, Maxps, Maxsd, Maxss, Minpd, Minps, Minsd,
|
||
Minss, Mulpd, Mulps, Mulsd, Mulss, Orpd, Orps, Movd, Movq, Movntq, Movapd, Movaps,
|
||
Movdqa, Movdqu, Movdq2q, Movq2dq, Movhlps, Movhpd, Movhps, Movlhps, Movlpd,
|
||
Movlps, Movmskpd, Movmskps, Movnti, Movntpd, Movntps, Movsd, Movss, Movupd,
|
||
Movups, Pmovmskb, Psadbw, Pshufw, Pshufd, Pshuflw, Pshufhw, Psubb, Psubw, Psubd,
|
||
Psubq, Psubsb, Psubsw, Psubusb, Psubusw, Paddb, Paddw, Paddd, Paddq, Paddsb,
|
||
Paddsw, Paddusb, Paddusw, Pavgb, Pavgw, Pinsrw, Pextrw, Pmaxsw, Pmaxub, Pminsw,
|
||
Pminub, Pmulhuw, Pmulhw, Pmullw, Pmuludq, Psllw, Pslld, Psllq, Pslldq, Psraw,
|
||
Psrad, Psrlw, Psrld, Psrlq, Psrldq, Punpcklbw, Punpcklwd, Punpckldq, Punpcklqdq,
|
||
Punpckhqdq, Packusdw, Pcmpgtb, Pcmpgtw, Pcmpgtd, Pcmpeqb, Pcmpeqw, Pcmpeqd,
|
||
Emms, Packsswb, Packuswb, Punpckhbw, Punpckhwd, Punpckhdq, Packssdw, Pand,
|
||
Pandn, Por, Pxor, Pmaddwd, Rcpps, Rcpss, Rsqrtss, Movsxd, Shufps, Shufpd, Sqrtpd,
|
||
Sqrtps, Sqrtsd, Sqrtss, Subpd, Subps, Subsd, Subss, Ucomisd, Ucomiss, Unpckhpd,
|
||
Unpckhps, Unpcklpd, Unpcklps, Xorpd, Xorps, Bt, Bts, Btr, Btc, Xlat, Cpuid,
|
||
Rsm, Bsf, Bsr, Cmpxchg, Cmpxchg8b, Hlt, Cmc, Lgdt, Sgdt, Lidt, Sidt, Smsw, Lmsw,
|
||
Invlpg, Lar, Lsl, Clts, Invd, Wbinvd, Ud2, Wrmsr, Rdtsc, Rdmsr, Rdpmc, Fcom,
|
||
Fdivr, Fiadd, Fimul, Ficom, Ficomp, Fidiv, Fidivr, Faddp, Fmulp, Fsubp, Fsubrp,
|
||
Fdivp, Fdivrp, Fbld, Fbstp, Ffree, Frstor, Fsave, Fucom, Fucomp, Fldenv, Fstenvm,
|
||
Fxch, Fabs, Fxam, Fld1, Fldl2t, Fldl2e, Fldpi, Fldlg2, Fldln2, Fldz, Fyl2x,
|
||
Fptan, Fpatan, Fxtract, Fprem1, Fdecstp, Fincstp, Fprem, Fyl2xp1, Fsincos, Frndint,
|
||
Fscale, Fsin, Fcos, Ftst, Fstenv, F2xm1, Fnop, Finit, Fclex, Fcompp, Sysenter,
|
||
Sysexit, Sldt, Str, Lldt, Ltr, Verr, Verw, Sfence, Lfence, Mfence, Prefetchnta,
|
||
Prefetcht0, Prefetcht1, Prefetcht2, Prefetch, Prefetchw, Fxrstor, Fxsave, Ldmxcsr,
|
||
Stmxcsr, Fcmovb, Fcmove, Fcmovbe, Fcmovu, Fcmovnb, Fcmovne, Fcmovnbe, Fcmovnu,
|
||
Fucomi, Fcomi, Fucomip, Fcomip, Fucompp, Vmcall, Vmlaunch, Vmresume, Vmxoff,
|
||
Monitor, Mwait, Xgetbv, Xsetbv, Vmrun, Vmmcall, Vmload, Vmsave, Stgi, Clgi,
|
||
Skinit, Invlpga, Swapgs, Rdtscp, Syscall, Sysret, Femms, Getsec, Pshufb, Phaddw,
|
||
Phaddd, Phaddsw, Pmaddubsw, Phsubw, Phsubd, Phsubsw, Psignb, Psignw, Psignd,
|
||
Pmulhrsw, Pabsb, Pabsw, Pabsd, Movbe, Palignr, Rsqrtps, Vmread, Vmwrite, Svldt,
|
||
Rsldt, Svts, Rsts, Xsave, Xrstor, Vmptrld, Vmptrst, Maskmovq, Fnstenv, Fnstcw,
|
||
Fstp1, Fneni, Fndisi, Fnclex, Fninit, Fsetpm, Fisttp, Fnsave, Fnstsw, Fxch4,
|
||
Fcomp5, Ffreep, Fxch7, Fstp8, Fstp9, Haddpd, Hsubpd, Addsubpd, Addsubps, Movntdq,
|
||
Fcom2, Fcomp3, Haddps, Hsubps, Movddup, Movsldup, Cvtsi2sd, Cvtsi2ss, Movntsd,
|
||
Movntss, Lddqu, Movshdup, Popcnt, Tzcnt, Lzcnt, Pblendvb, Pblendps, Pblendpd,
|
||
Ptest, Movsxbw, Movsxbd, Movsxbq, Movsxwd, Movsxwq, Movsxdq, Muldq, Pcmpeqq,
|
||
Movntdqa, Xsaveopt, Maskmovdqu, Ud1, Pcmpgtq, Movzxbw, Movzxbd, Movzxbq, Movzxwd,
|
||
Movzxwq, Movzxdq
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelSegment">Сегменты Intel:</p>
|
||
<pre class="code">
|
||
enum IntelSegment {
|
||
None,
|
||
es,
|
||
cs,
|
||
ss,
|
||
ds,
|
||
fs,
|
||
gs
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelFlag">Флаги Intel:</p>
|
||
<pre class="code">
|
||
enum IntelFlag {
|
||
C,
|
||
P,
|
||
A,
|
||
Z,
|
||
S,
|
||
T,
|
||
I,
|
||
D,
|
||
O
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelRegistr">Регистры Intel:</p>
|
||
<pre class="code">
|
||
enum IntelRegistr {
|
||
eax,
|
||
ecx,
|
||
edx,
|
||
ebx,
|
||
esp,
|
||
ebp,
|
||
esi,
|
||
edi,
|
||
r8,
|
||
r9,
|
||
r10,
|
||
r11,
|
||
r12,
|
||
r13,
|
||
r14,
|
||
r15
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelCommand">Класс для работы с командой Intel:</p>
|
||
<pre class="code">
|
||
class IntelCommand {
|
||
public:
|
||
uint64 address(); // возвращает адрес команды
|
||
<a href="#IntelCommandType">IntelCommandType</a> type(); // возвращает тип команды
|
||
string text(); // возвращает текстовое представление
|
||
int size(); // возвращает размер команды
|
||
int dump(int index); // возвращает данные команды по индексу index
|
||
<a href="#CommandLink">CommandLink</a> link(); // возвращает связь команды
|
||
int flags(); // возвращает флаги команды
|
||
<a href="#IntelSegment">IntelSegment</a> baseSegment(); // возвращает базовый сегмент
|
||
<a href="#IntelCommandType">IntelCommandType</a> preffix(); // возвращает тип преффиксной команды
|
||
<a href="#IntelOperand">IntelOperand</a> operand(int index); // возвращает операнд с индексом index
|
||
};
|
||
</pre>
|
||
|
||
<p id="OperandType">Типы операндов:</p>
|
||
<pre class="code">
|
||
enum OperandType {
|
||
None,
|
||
Value,
|
||
Registr,
|
||
Memory,
|
||
SegmentRegistr,
|
||
ControlRegistr,
|
||
DebugRegistr,
|
||
FPURegistr,
|
||
HiPartRegistr,
|
||
BaseRegistr,
|
||
MMXRegistr,
|
||
XMMRegistr
|
||
};
|
||
</pre>
|
||
|
||
<p id="OperandSize">Размеры операндов:</p>
|
||
<pre class="code">
|
||
enum OperandSize {
|
||
Byte,
|
||
Word,
|
||
DWord,
|
||
QWord,
|
||
TByte,
|
||
OWord,
|
||
FWord
|
||
};
|
||
</pre>
|
||
|
||
<p id="IntelOperand">Класс для работы с операндом команды Intel:</p>
|
||
<pre class="code">
|
||
class IntelOperand {
|
||
public:
|
||
int type(); // возвращает тип операнда
|
||
<a href="#OperandSize">OperandSize</a> size(); // возвращает размер операнда
|
||
int registr(); // возвращает регистр
|
||
int baseRegistr(); // возвращает базовый регистр
|
||
int scale(); // возвращает коэффициент
|
||
uint64 value(); // возвращает значение
|
||
};
|
||
</pre>
|
||
|
||
<p id="CommandLinks">Класс для работы со списком связей:</p>
|
||
<pre class="code" id="CommandLinks">
|
||
class CommandLinks {
|
||
public:
|
||
<a href="#CommandLink">CommandLink</a> item(int index); // возвращает связь с индексом index
|
||
int count(); // возвращает количество связей в списке
|
||
};
|
||
</pre>
|
||
|
||
<p id="LinkType">Типы связей:</p>
|
||
<pre class="code">
|
||
enum LinkType {
|
||
None,
|
||
SEHBlock,
|
||
FinallyBlock,
|
||
DualSEHBlock,
|
||
FilterSEHBlock,
|
||
Jmp,
|
||
JmpWithFlag,
|
||
JmpWithFlagNSFS,
|
||
JmpWithFlagNSNA,
|
||
JmpWithFlagNSNS,
|
||
Call,
|
||
Case,
|
||
Switch,
|
||
Native,
|
||
Offset,
|
||
GateOffset,
|
||
ExtSEHBlock,
|
||
MemSEHBlock,
|
||
ExtSEHHandler,
|
||
VBMemSEHBlock
|
||
};
|
||
</pre>
|
||
|
||
<p id="CommandLink">Класс для работы со связью команды:</p>
|
||
<pre class="code">
|
||
class CommandLink {
|
||
public:
|
||
uint64 toAddress(); // возвращает адрес, на который ссылается связь
|
||
<a href="#LinkType">LinkType</a> type(); // возвращает тип связи
|
||
<a href="#IntelCommand">IntelCommand</a> from(); // возвращает родительскую команду
|
||
};
|
||
</pre>
|
||
|
||
<p id="FFILibrary">Класс для работы с библиотекой:</p>
|
||
<pre class="code">
|
||
enum ParamType {
|
||
"void",
|
||
"byte",
|
||
"char",
|
||
"short",
|
||
"ushort",
|
||
"int",
|
||
"uint",
|
||
"long",
|
||
"ulong",
|
||
"size_t",
|
||
"float",
|
||
"double",
|
||
"string",
|
||
"pointer"
|
||
};
|
||
|
||
enum CallType {
|
||
"default",
|
||
"cdecl",
|
||
"stdcall"
|
||
};
|
||
|
||
class FFILibrary {
|
||
public:
|
||
string name(); // возвращает имя
|
||
uint64 address(); // возвращает адрес в памяти
|
||
void close();
|
||
FFIFunction getFunction(string name, ParamType ret, ParamType param1, ...); // возвращает функцию
|
||
FFIFunction getFunction(string name, table (ParamType ret, CallType abi, ParamType, ...)); // возвращает функцию
|
||
};
|
||
</pre>
|
||
|
||
<p id="FFIFunction">Класс для работы с внешней функцией:</p>
|
||
<pre class="code">
|
||
class FFIFunction {
|
||
string name(); // возвращает имя
|
||
uint64 address(); // возвращает адрес в памяти
|
||
};
|
||
</pre>
|
||
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<hr noshade="noshade" size="1" />
|
||
|
||
<div align="center">
|
||
© 2006-2015 Copyright VMProtect Software
|
||
</div>
|
||
</body>
|
||
</html> |