# Скрипты: Работа с файлами и папками

> Функции для манипуляции файловой системой: копирование, удаление, переименование файлов и проверка их существования через скрипт.

Canonical HTML: <https://www.niceprotect.com/help/ru/files_and_folders.htm>

## Files and folders


Смещения и адреса принимают десятичный или шестнадцатеричный ввод (префикс 0x или $ означает hex). Команды, возвращающие адрес или размер, записывают его в десятичном виде. Сырые наборы байтов (данные для putcode и результат getcode) — это HEX-строки байтов, а не числа.

**delfile** <filename> - удалить файл

**copyfile** <filename from>, <filename to> - скопировать файл. Завершающий $ в пути раскрывается в каталог приложения

**addlog** <filename>, <string> - добавить строку в лог-файл

**shell** <filename> - запустить EXE-файл (без ожидания; чтобы дождаться и получить код возврата, используйте команду run)

**putcode** <offset>, <HEX_Stub> - записать набор HEX-байтов по смещению

**getcode** <offset>, <length>, <accumulator> - прочитать байты из файла в аккумулятор как HEX-строку

**getfile** <accumulator> - загрузить всё содержимое выходного файла в аккумулятор

**getfilelength** <filename>, <accumulator> - записать размер файла (десятичное) в аккумулятор. Если задан один параметр, это аккумулятор, и измеряется выходной файл

**getoem** <accumulator> - прочитать строку OEM Info из dos_header

**setoem** <text> - записать строку OEM Info в dos_header

**getoep** <accumulator raw>, <accumulator rva> - получить точку входа программы: файловое смещение и RVA (оба десятичные)

**setoep** <rva> - задать новую точку входа (RVA)

**getimagebase** <accumulator> - получить адрес ImageBase (десятичное)

**createsection** <name>, <size>, <accumulator (file offset)>, <accumulator (virtual address)> - создать новую PE-секцию и записать её файловое смещение и RVA

**setflag** <flags> - установить флаги характеристик для всех секций (для hex-маски используйте префикс 0x)

**invert** <value>, <accumulator> - кодирует значение как 4-байтовую HEX-строку в порядке little-endian (например, 0x00401011 преобразуется в 11104000; нужно для формирования адресов push/call). pack <value>, dword, le, <accumulator> — более понятный аналог

**xorcode** <rva>, <length>, <accumulator> - XOR-шифрует <length> байтов по указанному RVA случайным ключом, записывает их обратно и помещает готовый код-декодер (HEX) в аккумулятор

**createpath** <path> - создать дерево каталогов
