Как открыть 1с без ключа защиты

Обновлено: 06.07.2024

В этой статье описаны способы обхода аппаратных систем защиты. В качестве примера рассмотрена технология HASP (Hardware Against Software Piracy), разработанная компанией Aladdin Knowledge Systems Ltd. В прошлом данная технология являлась одной из самых популярных аппаратных систем защиты ПО.

Мощью аппаратной защиты HASP пользуются многие серьезные разработчики софта, которые не хотят, чтобы их продукт несанкционированно распространялся. Хаспом, например, защищаются пакеты "1С.Бухгалтерия" или "1С.Предприятие", без которых не может прожить ни одно более или менее организованное дело. Популярный юридический справочник "КонсультантПлюс" также защищает доступ к данным с помощью электронных ключиков. Чтобы воспользоваться вышеупомянутым или другим не менее дорогостоящим софтом, не платя никому ни копейки, недостаточно просто полазить по Сети в поисках txt’шника с ключиками. Однако хакер всегда разберется, что делать с защитой, пусть и аппаратной. И паяльник ему для этого не понадобится.

Взглянем

Утрируя, можно сказать, что HASP состоит из двух частей: аппаратной и программной. Аппаратная часть — это электронный ключик в виде USB-брелка, PCMCIA-карты, LTP-девайса или вообще внутренней PCI-карты. Установленный софт будет работать только на той машине, в которую воткнут электронный ключ. Собственно, неплохо было бы отучить софт от такой неприятной для кошелька привычки.

Программная часть — это драйвера электронного ключа и различный софт, привязывающий электронные ключи с их драйверами непосредственно к защищаемому продукту или к каким-то зашифрованным данным. В статье мы рассмотрим и обойдем защиту, использующую USB-брелок — наверное, наиболее популярный электронный ключ на сегодня.

Механизм системы защиты

Сам брелок нас почти не интересует, в отличие от ПО в его комплекте. Для нас наибольший интерес представляет модуль hardlock.sys. Не углубляясь в подробности, отмечу, что этот драйвер отвечает за взаимодействие с аппаратным ключом. Он имеет два объекта устройства, один из которых обладает символьным именем DeviceFNT0. Используя этот объект, защищенное приложение посредством диспетчера ввода-вывода проверяет лицензию на использование данного ПО.

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

Перехват и эмуляция

Как уже отмечалось, идея перехвата состоит в перезаписи обработчиков IRP-пакетов. Для этого необходимо иметь возможность изменять поля структуры DRIVER_OBJECT. К счастью, существует функция IoGetDevicePointer, которая возвращает указатель на объект вершины стека именованных устройств и указатель на соответствующий файловый объект. Вот фрагмент кода функции, устанавливающей ловушку:

NTSTATUS HookDevice(LPWSTR lpDevice)

UNICODE_STRING DeviceName;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;

RtlInitUnicodeString(&DeviceName, lpDevice);
IoGetDeviceObjectPointer(&DeviceName, 1u, &FileObject, &DeviceObject);

Получив указатель на структуру DEVICE_OBJECT, имеем указатель на DRIVER_OBJECT. Теперь заменим адреса обработчиков и функций выгрузки драйвера на свои:

NTSTATUS HookDevice(LPWSTR lpDevice)

gDriverObject = DeviceObject-> DriverObject;

gDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = HookDispatch;

gInternalDeviceControl = gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL];
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDispatch;

gDriverUnload = gDriverObject->DriverUnload;
gDriverObject->DriverUnload = HookUnload;

В последней строчке вызывается функция ObfDereferenceObject, которая уменьшает количество ссылок на файловый объект. Это необходимо делать для корректной выгрузки драйвера, чтобы не было утечки ресурсов и аналогичных ошибок.

Так как указатель на объект драйвера защиты сохранeн, то чтобы снять ловушку, нужно просто восстановить прежние обработчики IRP-пакетов:

gDriverObject-> MajorFunction[IRP_MJ_DEVICE_CONTROL] = gDeviceControl;
gDriverObject-> MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = gInternalDeviceControl;
gDriverObject->DriverUnload = gDriverUnload;

Конечно, надо добавить соответствующие проверки на валидность указателей и прочее.

Теперь необходимо реализовать правильную выгрузку драйверов. Так как система защиты по каким-либо причинам может закончить свою работу раньше нашего драйвера, то чтобы избежать краха системы из-за неверных указателей, обработаем это событие в функции HookUnload:

void HookUnload(PDRIVER_OBJECT DrvObj)

Здесь происходит восстановление полей структуры DRIVER_OBJECT, и передаeтся управление на оригинальный код выгрузки драйвера перехваченного устройства.

Аналогично поступаем, если наш драйвер завершает работу раньше системы защиты. Только нужно высвободить захваченные ресурсы и не вызывать сохранeнный gHookUnload.



Принцип работы эмулятора

Перехватчик

Зная основные принципы простейшего перехвата IRP-пакетов, приступим к реализации пока только самого перехватчика для дальнейшего анализа. Для этого создадим объект драйвера, который содержит символьное имя (например DosDevicesHook) и точки входа CREATE, CLOSE, READ.

IoCreateDevice(DriverObject, 0, &usDeviceName, FILE_DEVICE_NULL, 0, 0, &pDeviceObject);
IoCreateSymbolicLink(&usSymbolicDeviceName, &usDeviceName);

DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverDispatch;
DriverObject->MajorFunction[IRP_MJ_READ] = DriverDispatch;
DriverObject->DriverUnload = DriverUnload;

if (idlTail->IrpData.InputLength)
idlTail->InputBuffer = ExAllocatePool(NonPagedPool, idlTail->IrpData.InputLength);
RtlCopyMemory(idlTail->InputBuffer, Irp->AssociatedIrp.SystemBuffer, idlTail->IrpData.InputLength);
>

if (IoSL->MajorFunction == IRP_MJ_DEVICE_CONTROL)
Status = pHookedDriverDispatch[IRP_MJ_DEVICE_CONTROL]( DeviceObject, Irp);

if (idlTail->IrpData.OutputLength)
idlTail->OutputBuffer = ExAllocatePool(NonPagedPool, idlTail-> IrpData.OutputLength);
RtlCopyMemory(idlTail->OutputBuffer, lpBuffer, idlTail->IrpData.OutputLength);
>

Length = IoSL->Parameters.Read.Length;
if (Length == sizeof(IRP_DATA) && idlHead)
RtlCopyMemory(Irp->UserBuffer, &idlHead->IrpData, Length);
else if (idlHead && Length == (idlHead-> IrpData.InputLength + idlHead-> IrpData.OutputLength))
RtlCopyMemory(Irp->UserBuffer, idlHead-> InputBuffer, idlHead->IrpData.InputLength);
RtlCopyMemory((PVOID)((ULONG)Irp->UserBuffer + idlHead->IrpData.InputLength), idlHead-> OutputBuffer, idlHead->IrpData.OutputLength);
>
else if (Length == 1 && idlHead)
if (idlHead->InputBuffer)
ExFreePool(idlHead->InputBuffer);
if (idlHead->OutputBuffer)
ExFreePool(idlHead->OutputBuffer);

idlTemp = idlHead->ldlNext;
ExFreePool(idlHead);
idlHead = idlTemp;
if (!idlTemp)
idlTail = NULL;
>

Когда перехватчик готов, запускаем сначала его, а затем — защищенное приложение с ключами и без. Из полученных логов становится видно, какие управляющие коды посылаются и их результаты. Также можно видеть, что запросы и ответы на два различных кода (9c402450, 9c4024a0) не изменяются. Казалось бы, можно построить табличный эмулятор, но после серии запусков убеждаемся, что это невозможно, так как содержимое буферов различно, и неизвестно, как оно образуется.



Перехваченные пакеты без ключа



Перехваченные пакеты с ключом

Затем возможны несколько вариантов дальнейших действий:

  • изучать дебри драйвера защиты;
  • воспользоваться информацией самих разработчиков системы.

Оба варианта дают необходимую информацию. Итак, оказывается, содержимое пакетов шифруется публичным симметричным алгоритмом AES (Advanced Encryption Standard). Логичной целью является получение ключа шифрования.

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



Пример дампа ключа

Поэтому первое, что нужно сделать, это получить ключ. Поставленную задачу может решить обычный брутфорс:

unsigned short Key;
unsigned char RefKey[8], VerKey[8];

for (Key = 0; Key <= 0x7fff, Key++)
if (!HL_LOGIN(Key, 1, RefKey, VerKey))
HL_LOGOUT();
Break;
>
>

Далее ключ (MODAD) используется для снятия дампа: тип, идентификатор, порт подключения и так далее. Для этого есть функции, определенные разработчиками.

Функции HL_LOGIN, HL_LOGOUT доступны из HASP SDK для разработчиков приложений, защищенных на этой платформе, и имеют следующие прототипы:

WORD HL_LOGIN(WORD ModAd, Word Access, Byte *RefKey, Byt *VerKey);
WORD HL_LOGOUT(void);

Первая функция служит для открытия сессии работы с ключом защиты посредством драйвера, вторая – завершает сессию. Это прототипы старых версий HASP SDK, но работают они и с новыми типами ключей, так как разработчики обеспечили обратную совместимость.

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

Обработчик

Теперь есть все необходимое для корректной работы модуля. Осталось реализовать подстановку лицензионной информации. Причем можно перехватывать лишь некоторые IRP-пакеты. Здесь все уже зависит от конкретной версии ключа и защищаемой программы.

Дамп ключа лучше не встраивать в драйвер, а загружать динамически из реестра. Лучше основываться на уже готовом перехватчике запросов, так будет проще отладить драйвер, отправляя перехваченные/подставленные пакеты на анализ пользовательскому приложению. Принципиально логика перехватчика будет иметь такой вид:

PIO_STACK_LOCATION Stack = Irp-> Tail.Overlay.CurrentStackLocation;
ULONG IoControlCode;
if (Stack->MajorFunction == 14)
IoControlCode = Stack.DeviceIoControl.IoControlCode;
If (IoControlCode != 0x9c402458)
Return gDeviceControl(DeviceObject, Irp);
>
else
Encrypt(Irp->AssociatedIrp.SystemBuffer);
Crypt(Irp->AssociatedIrp.SystemBuffer, Key, DumpMemory);
>
>

Пакет запроса к драйверу находится в криптованном виде, поэтому для доступа к его содержимому требуется расшифровать, а затем зашифровать. Возникает вопрос: каким алгоритмом и каким ключом выполнено шифрование? Покопавшись в исходниках от создателей системы, можно получить следующий первичный алгоритм шифрования пакета:

void Encrypt(BYTE * Buffer)
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);

if (Ver)
for (int i = 0; i < 0xB9; i++) (WORD)(Buffer + i) += Seed;
Seed = (Seed >> 15) | (Seed << 1);
Seed -= (WORD)(Buffer + i) ^ i;
>

for (int i = 0xBE; i < 0xFF; i++) (WORD)(Buffer + i) -= Seed;
Seed = (Seed >> 15) | (Seed << 1);
Seed += (WORD)(Buffer + i) ^ i;
>

Видно, что алгоритм гораздо сложнее, чем обычный сдвиг и исключающее "или". А вот алгоритм дешифрования:

void Decrypt(BYTE* Buffer)
WORD Seed = ((WORD)Buffer + 0x5e);
WORD Ver = ((WORD)Buffer + 0xba);

if (Ver) for (int i = 0xFE; i > 0xBD; i--) Seed -= (WORD)(Buffer + i) ^ i;
Seed = (Seed << 15) | (Seed >> 1);
(WORD)(Buffer + i) += Seed;
>

for (int i = 0xB8; i >= 0; i--) Seed += (WORD)(Buffer + i) ^ i;
Seed = (Seed << 15) | (Seed >> 1);
(WORD)(Buffer + i) -= Seed;
>

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

В заключение отмечу, что построение табличного эмулятора, основанного на перехвате DeviceIoControl, — достаточно трудная задача. Но такой принцип эмулятора можно использовать и на другом уровне взаимодействия: создать виртуальную USB-шину.

Заключение

Это не единственный способ избавиться от системы защиты. Существуют и другие, более совершенные методы. Изложенные в статье принципы можно использовать и для анализа работы драйверов, перехватывая IRP-пакеты. Таким образом можно добавить неплохой инструмент в свой сделанный на коленке набор. Удачи!

Приобретая программу 1С, в комплект поставки включается лицензия на данное программное обеспечение. Лицензия может быть представлена в виде:

  • аппаратного ключа — специальной флешки для установки в USB-порт компьютера;
  • программного ключа лицензии – пинкода программной защиты.

1С: Предприятие поддерживает одновременное использование аппаратной лицензии и программной при работе с информационной базой.

Использование программной лицензии

При использовании программной лицензии файл лицензии сохраняется в специальной папке компьютера и имеет расширение *.lic. Файл с лицензией может располагаться в различных местах файловой системы:

  • Каталог конфигурационных файлов конкретной версии платформы: C:\Program Files (x86)\1Cv8\8.3.XX.YYY\licenses.
  • Каталог пользователя от имени которого работает система: %AppData%\1C\licenses.
  • Каталог пользователя компьютера: %ProgramData%\1C\licenses.



Также могут быть и другие места хранения в зависимости от версии ОС Windows. Самый простой способ найти лицензию — через поиск по строке *.lic.

Поиск должен найти файл для 1C формата *.lic. Если нашлось несколько таких файлов, то, скорее всего, эти файлы остались от предыдущих активаций 1С, поскольку на каждую новую активацию 1C создается новый файл. Актуальным считается файл с самой свежей датой.

В файле содержится закодированная информация о количестве лицензий и данных компьютера и его параметрах.

Лицензия «привязывается» к компьютеру по параметрам:

  • сетевое имя;
  • сетевой адаптер и его параметры;
  • материнская плата;
  • жесткий диск;
  • процессор;
  • оперативная память;
  • операционная система (дата установки и серийный номер).

Открыть файл можно с помощью программы Блокнот.


Файл однопользовательской лицензии для конфигурации 1С Бухгалтерия предприятия (базовая версия).


Также, по каким-то причинам файл лицензии может быть поврежден. В этих ситуациях необходимо восстановить лицензию, нажав на ссылку Получить лицензию .


После выбора способа получения лицензии нажимаем кнопку Далее .


При этом указываем полученный при покупке 1С пинкод. Посмотреть пинкоды можно в конверте, который поставляется вместе с конфигурацией.


Если ранее лицензия запрашивалась, то выбираем пункт Ввод данных ранее запрошенной лицензии .

В открывшемся окне вставляем данные из файла.


Следуем шагам установщика по кнопке Далее до кнопки Готово и сохраняем полученную лицензию.

Использование аппаратного ключа защиты

При работе с сетевым ключом, могут быть и другие причины:

  • отсутствие сетевого подключения;
  • количество подключенных пользователей превышает количество лицензий.
  • сбой в работе драйвера ключа защиты.

В окне запуска программы PDF перейдите по кнопке Настройка и проверьте выставление флажка Использовать аппаратную лицензию (ключ защиты) .


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


При проблемах с драйвером, его можно установить (переустановить), открыв приложение 1С по кнопке Пуск — Все программы — 1С Предприятие . В разделе Дополнительно видим команды:


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


Возможна ситуация, что сам ключ поврежден, что редко, но случается. В этом случае система его не будет видеть: светодиод ключа не будет светиться. В таком случае, необходимо обратиться в обслуживающий центр 1С и произвести замену ключа.

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Похожие публикации

Карточка публикации

(5 оценок, среднее: 3,40 из 5)

Данную публикацию можно обсудить в комментариях ниже.
Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Огромное спасибо! Огромное количество информации как всегда интересно и доступно преподнесено Мариной Аркадьевной. Всегда с удовольствием посещаю ваши семинары

Содержание

Вы можете задать еще вопросов

Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8

Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявку

Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>

Оказывается, 1С:Предприятие 7.7 не выполняет проверок прав доступа со стороны программного кода – все проверки выполняются только в интерактивном (пользовательском) режиме. Поэтому для защиты необходимо полностью закрыть любые возможности для выполнения любого поступающего извне программного кода, что вполне обеспечивают средства администрирования 1С (и системы Windows NT/2000/XP).

Откроем в Конфигураторе информационную базу и зайдем на вкладку Права. Дважды щелкнем на название имеющегося набора прав (или создадим новый набор). Из контекстного меню при клике на корневом элементе появившегося «дерева» выберем единственный пункт «Свойства». В списке перечислены потенциально опасные действия пользователей. Рассмотрим некоторые из них.

Настройка: Административные функции

Уберите эту галочку, и пользователи не смогут под своим паролем изменять конфигурацию (файл конфигурации MD).

Настройка: Использование в качестве OLE Automation сервера

Информационную базу можно «поюзать» через механизм OLE. Закройте для Темного Пользователя еще одну дверь, которая позволила бы ему видеть и изменять в информационной базе все.

Настройка: Использование любых Внешних Отчетов и Обработок

Уберите эту галочку, и Темные Пользователи не смогут запускать программный код 1С в виде привнесенных извне отчетов и обработок (файлов ert). Эта возможность тоже, независимо от прав, позволяет делать с информационной базой практически все.

Настройка: Использование общих Внешних Отчетов и Обработок

Общие внешние отчеты и обработки находятся в папке ExtForms. На эту папку, разумеется, необходимо установить права доступа «только на чтение». Иначе Темные Пользователи положат в эту папку нужные им обработки, и выполнят произвольный программный код.

Настройка: Использование функций в табло и формульном калькуляторе

Малоизвестная возможность, но она тоже позволяет «сделать все», не имея никаких других прав.
Откройте пункт меню Сервис-Табло. Наберите в появившемся Табло (засветите в него) следующий программный код:

Если в каталоге информационной базы лежит внешний отчет Тест.ert, то он будет открыт и выполнен, независимо от установленных у пользователя прав на выполнение Внешних Отчетов и Обработок. Аналогичная возможность имеется для калькулятора, если в меню Сервис-Параметры, на вкладке Общие, Темный Пользователь установил для него формульный режим.

Методы ОткрытьФорму/ОткрытьФормуМодально

Аналогичная уязвимость может существовать для конфигураций: если они выполняют встроенную функцию 1С наподобие

не проверяя пользовательские права, то Темный 1С-ник может сделать с информационной базой опять же все, что захочет, ибо для него информационная база полностью открыта. Поэтому закройте в систему и эти «врата», и у Темного 1С-ника будет меньше шансов выполнить свое черное дело.

Защита таблицы

Для защиты таблиц от Темного Пользователя в 1С:Предприятие имеется встроенный метод Защита(), который позволяет отключить возможность копирования таблицы, в том числе через буфер обмена.

ОбработкаЯчейкиТаблицы

Темный 1С-ник может занести в поле Расшифровка таблицы совсем не то, что предусматривал разработчик.
Например, "Отчет.КарточкаСчета". Таким способом, он может открыть "неположенный" ему по должности отчет.

Блокируем чтение и изменение таблиц данных

Информационную базу (особенно, в DBF-варианте) злоумышленник может скопировать и унести целиком, ибо в сжатом виде она может «весить» совсем немного. После этого, злоумышленник может просто удалить папку с паролями, и получить к своей копии базы полный, ничем не ограниченный доступ.

SQL-вариант информационной базы тоже может быть скопирован, но для этого надо знать имя сервера и пароль пользователя sa (или логин и пароль dbo). Как же узнать эту информацию? Она хранится (в зашифрованном виде) в файле DBA информационной базы, и поддается расшифровке при помощи небольшой «хакерской» утилиты (название не помню).

Впрочем, во многих случаях пароль sa назначен пустым, или представляет собой любимое многими администраторами значение 123. Чтобы выяснить этот факт, достаточно воспользоваться сетевым сканером безопасности, который выявит в вашей сети эти и подобные огрехи. Удачным сканером безопасности является программа x-spider.

Однако, про утилитку, извлекающую из информации о подключении логины и пароли, Темные Пользователи, разумеется, уже знают, поэтому пустой или не пустой пароль sa - особой роли уже не играет. Факт в том, что при любом пароле Темные Пользователи могут делать с информационной базой 1С все, что угодно: копировать всю базу, а также изменять или удалять отдельные записи. Правда, это придется делать на более низком уровне (правкой таблиц информационной базы), но ничего невозможного или сверхсложного в этом нет. Таблицы есть таблицы, просматривать и редактировать их можно небольшими утилитами или скриптами (в т.ч. из комплекта Microsoft Office), а связи между элементами данных прописаны в текстовом файле DD/DDS.

Защита при помощи сервера терминалов

Поэтому, пожалуй, единственным способом защититься от подобных атак является запрет запуска в пользовательском сеансе 1С других программ, за исключением 1С:Предприятие (это может быть реализовано, например, на сервере терминалов). Защита от запуска посторонних программ реализуется при помощи ключа реестра RestrictRun (или соответствующих настроек в групповой политике домена).

Строковые параметры с именами в виде чисел по возрастанию указывают, запуск каких программ необходимо разрешить (запуск остальных будет запрещен), например:

При экспериментах разрешите себе запуск regedit.exe.

Прописывайте полные пути, иначе Темный Пользователь сможет назвать именем 1cv7s.exe произвольный софт.

Скрываем кнопку Пуск и Рабочий стол

Пример программы, которая скрывает кнопку Пуск (вместе с панелью задач) и рабочий стол.
Чтобы от панели задач не оставалась «дырка» в окне Windows, включите ее (панели задач) автоскрытие.

Компилятор – Delphi 6.
Имя файла – HideStartButton.dpr.

Скомпилированные примеры кода приведены в конце этой статьи.

Блокируем окна «Открыть» и «Сохранить как», а также меню Пуск

Пример программы, которая блокирует окна «Открыть» и «Сохранить как», а также запрещает открытие меню кнопки Пуск по нажатию Ctrl-Esc и кнопки Windows.

Компилятор – Delphi 6.
Имя файла – HookCreateWindow.dpr.

Скомпилированные примеры кода приведены в конце этой статьи.

Автозапуск примеров

Автозапуск примеров из меню "Пуск-Программы-Автозагрузка" может быть отключен Темным пользователем удерживанием при старте клавиши Shift. Поэтому, автозапуск необходимо поместить "поглубже" в реестр.

Для их автозапуска для всех пользователей -

(однако, будьте с этим осторожны, чтобы не заблокировать все себе).

Ключ /i отключает окна с вопросами и заставляет программу "заснуть".

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

Автозапуск примеров для текущего пользователя

Блокируем нажатия Windows-E и Windows-R

Они открывают, соответственно, проводник и окно «Запуск программы», которые позволят Темному Пользователю сделать свое черное дело.
Ключ реестра NoWinKeys блокирует горячие клавиши Windows:

Отключение запуска диспетчера задач по Ctrl-Alt-Del

Еще одна лазейка для Темного Пользователя.
Ключ реестра DisableTaskMgr блокирует диспетчер задач:

Блокируем изменение программных файлов 1С:Предприятие

Патчинг программных файлов 1С:Предприятие позволяет исключить проверки паролей на файл метаданных, на внешние отчеты и обработки и на пользовательский сеанс 1С:Предприятие (фактически, пользователь может заходить под любой учетной записью, не указывая пароль).

Чтобы заблокировать вход с непредусмотренных программных файлов 1С:Предприятие, можно проверять при старте системы значение КаталогПрограммы(). Данный каталог необходимо разместить на сервере и защитить от изменения пользователями. Если каталог программы отличается от требуемого, то необходимо завершать пользовательский сеанс (возможно, с отправкой уведомления администратору).

При терминальном доступе данной проблемы не существует (конечно, при условии, что права терминального пользователя не позволяют ему патчить программные файлы).


«Сегодня настал апокалипсис. Все ранее установленные платформы 8.3.18.1208 (х64) на разных ПК перестали работать и выдают „нарушение целостности“. Это конец эпохи патчей для 1С?».

Дальше пошли обсуждения, как это можно «вылечить», но нас интересует тут другое. Дело в том, что 1С сама начала рассылать письма о проблеме «нарушения целостности», и о том, как с ней бороться. Но все по порядку.

Пользователи 1С начали получать в 20-х числах января этого года вот такие письма:

1

Несколько напрягает фраза «по имеющимся у нас данным, с большой вероятностью не все экземпляры программных продуктов фирмы „1С“ используются в Вашей организации на законных основаниях».

Это что, у 1С есть некие возможности, о которых мы не знаем? Откуда, как говорится, дровишки?

Есть версия, что компания работает в тесной связке с МВД, которые могут, к примеру, проверить наличие левых дистрибутивов на FTP-серверах. Об этом подробно писали на «Клерке», по выступлению эксперта Анны Лавриновой на конференции INFOSTART EVENT 2019 Inception.

Далее в письме пишут, что указанное программное обеспечение являются объектами исключительного права, называют правообладателя (ООО «1С-Софт»), и рассказывают, какая ответственность может быть за нарушение авторских и смежных прав. В том числе и уголовная, статья 146 УК.

И заодно 1С в письме предлагает убедиться, что используемое в компании ПО легально. Следующими способами:

1. Наличие у организации документов, подтверждающих покупку ПО.

Для коробочной поставки:

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

При этом на всех комплектующих есть одинаковый регистрационный номер, уникальный для данного экземпляра программного продукта.

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

2. В локальной сети используется именно легально приобретенная программа на все рабочие места.

3. Если в программе работает более одного сотрудника, версия должна быть ПРОФ или КОРП, в базовой версии работа более одного сотрудника невозможна.

4. Если используется клиент-серверная версия программ, то должна быть куплена лицензия/лицензии на Сервер.

5. Защита используемого ПО не отключена и не модифицирована.

Если нет уверенности, что используемое ПО легально, его немедленно нужно удалить. А если сама компания этого сделать не может, 1С рекомендует обратиться к обслуживающему организацию партнеру-франчайзи 1С. Или выбрать партнера-франчайзи из списка на сайте 1С.

2

«Пиратские „взломы“ (другие названия: „эмуляторы“, „кряки“) могут как использоваться в настоящий момент, так и просто присутствовать на компьютере или в локальной сети. При этом добросовестный пользователь может даже не догадываться о наличии противоправного софта, например, когда-то его установил приходящий обновлять программу 1С „друг сына одной из сотрудниц, он учится на программиста“».

Так как в 1С все понимают, не у всех есть квалификация, время, да и просто желание копаться и разбираться, предлагается временное решение. На сайте 1С можно оформить бесплатно временную лицензию, чтобы продолжать работу. Действует она 60 дней, активировать ее можно не позднее 15 марта. А за это время купить лицензионную программу.

«Можно получить несколько одноименных (например, две временные лицензии по 10 рабочих мест) или различных временных лицензий (например, временную лицензию на 50 рабочих мест и на Сервер). Получить такие лицензии может как сам пользователь, так и обслуживающий партнер „1С“ по его просьбе».

Обязательно нужно скачать последнюю версию «восьмерки» для корректной работы.

«Использование временных лицензий позволяет пользователю в течение 60 дней с момента их получения спокойно провести аудит и приобрести аналогичные лицензии 1С:Предприятия без ограничения срока действия или удалить противоправный пиратский софт и восстановить работу ранее правомерно приобретенных лицензий без ограничения срока действия».

  • в настоящий момент используется «взлом» (отключение или модификация) защиты (файлов платформы) 1С:Предприятия в различных вариантах, например, не куплена сама «основная» программа 1С:Предприятие и клиентские лицензии на рабочие места, а также лицензии на сервер, или используется больше рабочих мест чем куплено, или версия КОРП вместо купленной ПРОФ и т.п. Такие действия могли быть произведены пользователем как осознанно, так и случайно: кто-то мог оказать добросовестному пользователю 1С такую «медвежью услугу».

Ну тут все понятно, факт использования нелизензионного ПО. А вот второй вариант напрягает:

  • на компьютере есть следы «взлома» защиты, хотя сейчас используются только легально приобретенные программы 1С:Предприятие со штатной защитой.

И еще один любопытный момент:

«Если вы уверены, что точно покупали все необходимые программы 1С, но быстро не можете найти регистрационный номер программы, дистрибутивы, ключ защиты или ПИН—коды, то вы также можете воспользоваться возможностью бесплатно получить на сайте 1С „1С:Предприятие 8. Временные лицензии для восстановления“, и в течение 60 дней или докупить недостающие программы у партнеров „1С“ или подтвердить наличие легальных поставок 1С и пользоваться ими:

В общем, если что-то покупаете — все хранить, причем бессрочно, ничего не выбрасывать. А на компьютере, чтобы следов на нем никаких не было, наверное периодически нужно переустанавливать систему.

Ну а если ничего не сохранилось — бесплатно получать временную лицензию, которая действует примерно 2 месяца, и либо искать, либо докупать программы.

Игнорить точно не стоит. Эти письма — не дружеский совет, а предупреждение, что возможны разные последствия, вплоть до уголовки. Просто сразу не идут по инстанциям, поскольку кто-то ведь пойдет, все оформит и докупит, меньше ресурсов затратится на судебные дела.

Николай Андреев, шеф-редактор «Клерка»

Читайте также: