###### tags: `hack` `1c` `real life`
# Перенос 1C v7.7 с установленной защитой на конфигурацию.
дано: старая windows xp c 1c с защитой конфигурации от разработчика. простое копирование не позволяет запустить 1С и получить доступ к необходимому функционалу.
необходимо: перенести на новую windows 10.
Копируем папку \BIN и \DATABASE
пробуем запустить 1cv7.
получаем сообщение об отсутсвие unrar.dll.

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

копируем тот же файл в BIN и при запуске получаем новую ошибку

в process monitor от sysinternal (PM) есть следующая записи

C:\1c\BIN\regsvrex.exe \s \c C:\1c\BIN\ zlibeng.dll.exe
регистрируем руками библиотеку
c:\1c\BIN>regsvr32 zlibeng.dll
получаем новое сообщение об ошибке.

решение этой проблемы описано многократно в интернете
например, тут https://programmist1s.ru/poryadok-sortirovki-otlichaetsya-ot-sistemnogo/
Настройка системы должна происходить сразу и в 1С, и в ОС.
> [!note] Настройка в Windows:
>
>Откройте «Пуск – Настройка – Панель управления – Язык и региональные стандарты».
На закладке «Региональные параметры» должно быть выбрано – «Русский».
В меню «Языки – Подробнее…» – диалоговое окно Языки и службы текстового ввода – вкладка Параметры – Язык ввода по умолчанию должно быть – Русский-Русская.
В закладке «Дополнительно» должен быть выбран Русский язык.
Получите понятные самоучители по 1С бесплатно:
>
>Запустите программу 1С: в окне запуска выберите нужную информационную базу и в выпадающем списке — режим запуска «Конфигуратор».
В конфигураторе выберите подменю «Администрирование – Кодовая страница таблиц ИБ…».
В «Кодовая страница таблиц информационной базы» установите «1251 – Русский, белорусский, болгарский и сербский языки».
Проверяем настройки системы и 1С
Проходим дальше и получаем новую ошибку


> Îøèáêà ïðè ñîçäàíèè îáúåêòà èç êîìïîíåíòû C:\1c\BIN\Global.dll (îòñóòñòâóåò CLSID)
Var TablZnac; ãëÍÅÔÒÜ=1; ãëÓÃÎËÜ=2; ãëÃÀÇ=3; ãëÏÐÎ×ÅÅ_ÒÎÏËÈÂÎ=4; ÇàãðóçèòüÂíåøíþþÊîìïîíåíòó("Global.dll"); ãë=ÑîçäàòüÎáúåêò("Addin.Global"); ãëÎòêðûòüÔàéëÏåðåâîä(); ñïð=ÑîçäàòüÎáúåêò("Ñïðàâî÷íèê.Ïîëüçîâàòåëè"); Åñëè ñïð.ÂûáðàòüÝëåìåíòû()=1 Òîãäà ÎòêðûòüÔîðìóÌîäàëüíî("Îáðàáîòêà.ÈçìåíåíèåÏàðîëÿ", "Âõîä"); ÊîíåöÅñëè; ÇàãîëîâîêÑèñòåìû(Êîíñòàíòà.Îðãàíèçàöèÿ);
{Ãëîáàëüíûé ìîäóëü(295)}: Íåóäà÷íàÿ ïîïûòêà ñîçäàíèÿ îáúåêòà (Addin.Global)
ошибка создания объекта из компонента C:\1c\BIN\Global.dll (отсутствует CLSID)
Пробуем зарегистрировать указанную dll вновь используя `regsvr32`
Получаем стандартный запрос на логин

Заходим в систему и проверяем работоспособность.
Работает все кроме Справочников, при попытке открыть любой справочник 1С зависает на мертво.
Анализирую данные из PM видим обращение к файлу
C:\1c\Database\Extforms\lbl\g\s\k\k\e\d\f\h\t\q\g\k\t\b\gl.szz
По анализу папки lbl прихожу к выводу, что эта папка должна быть использованна для защиты. При каждом новом запуске 1С обращается к уникальному свежесгенерированному пути и новому файлу, в процессе запуска файл удаляется.
> [!Warning] Ограничив права на удаление в этой папке для всех пользователей получил файл с кодом. в результате анализа был найден следующий фрагмент кода
>Процедура ПриНачалеРаботыСистемы()
Var TablZnac; глНЕФТЬ=1; глУГОЛЬ=2; глГАЗ=3; глПРОЧЕЕ_ТОПЛИВО=4;
ЗагрузитьВнешнююКомпоненту("Global.dll");
гл=СоздатьОбъект("Addin.Global");
глОткрытьФайлПеревод();
спр=СоздатьОбъект("Справочник.Пользователи");
Если спр.ВыбратьЭлементы()=1 Тогда ОткрытьФормуМодально("Обработка.ИзменениеПароля", "Вход"); КонецЕсли;
ЗаголовокСистемы(Константа.Организация);
Ткт=СоздатьОбъект("Текст"); common=0; моно=0;
Попытка Ткт.Открыть(FS.WindowsКаталог()+"\LoadChoice.ini");
Для итер=1 По Ткт.КоличествоСтрок() Do
стр=Ткт.ПолучитьСтроку(итер);
if (common=1) and (лев(стр,7)="height=") then моно=Число(прав(стр, стрдлина(стр)-7)); break; EndIf;
Если стр="[COMMON]" Тогда common=1; ИначеЕсли лев(стр,1)="[" Then common=0; КонецЕсли;
EndDo;
Внимание привлек
>ЗагрузитьВнешнююКомпоненту("Global.dll");
гл=СоздатьОбъект("Addin.Global");
глОткрытьФайлПеревод();
где Global.dll не является стандартной dll для 1С
что навело на мысль, что используется защита описанная тут (оригинал более не доступен) https://web.archive.org/web/20210301010827/http://protsoft.ru/solutions/1c-protect.html
Варианты защиты 1С-конфигураций
>На сегодняшний день существует несколько вариантов защиты 1С-конфигураций, способных решить вопрос защищенности приложения от несанкционированного использования, пиратского тиражирования, а также от анализа и изменения исходного кода:
• Классический вариант заключается в переносе части кода во внешнюю компоненту (.dll) и дальнейшей защите получившейся библиотеки стандартными средствами Sentinel LDK Envelope или Sentinel LDK API из комплекта разработчика Sentinel LDK.
• Второй вариант подразумевает применение стороннего продукта WA: Защита конфигураций (известного также как WiseAdvice: Защита конфигураций), позволяющего обеспечить лицензирование и защиту решений на платформе 1С:Предприятие.
Защита 1С-конфигурации с формированием .dll
> При использовании данного метода защиты необходимо учитывать, что конфигурация 1С должна состоять из нескольких частей:
◇ Открытая часть, свободно настраиваемая пользователем, в которой он может самостоятельно дорабатывать какие-то ее части.
◇ И закрытая, являющаяся интеллектуальной собственностью разработчика, недоступная пользователю для изменения и анализа.
>
>Именно закрытая часть 1С-конфигурации должна входить в защищаемую библиотеку .dll, обеспечивая тем самым высокий уровень защиты приложения и гибкость применяемого решения, так как разработчик программного продукта сам определяет технологию защиты конфигурации 1С, а также может совершенствовать и обновлять защиту программного обеспечения от версии к версии.
Недостатком данного метода защиты является необходимость в наличии у разработчика знаний программирования на языках, отличных от используемых в 1С, например, C, VB, Delphi, а также времени, которое потребуется на построение защиты приложения.
При повторном и более внимательном просмотре данных с PM было замечено что 1c7l пытается безуспешно обратиться к файлу LoadChoice.ini.
Забираем файл LoadChoice.ini с исходной машины и помещаем в C:\Windows\.
Все справочники открываются как и должны.
Для разблокировки пароля на конфигурацию при запуске конфигуратора использовались следующие рекоммендации
https://iamsan.ru/windows/1cv77-conf-password
с учетом версионности 7.7.25
в файле SEVEN.DLL были заменены группа байтов
E8 4D F8 FF FF 83 C4 08 85 C0 5F 75 32 8B 54 24 48 50 50 68 02 80 00 00 8B 42
на
56 57 8B F0 8B F9 B9 20 00 00 00 F3 A4 5F 5E E8 3E F8 FF FF 83 C4 08 5F EB 25
Результат: 1С перенесена и полностью функциональна на новом компьютере.
+Доступ к конфигуратору разблокирован.