В UDS-диагностике неизбежен вопрос безопасного доступа — Seed&Key. Диагностический модуль TSMaster загружает алгоритм Seed&Key из DLL-файла для разблокировки защищённого доступа. Начиная с версии TSMaster 2024.03 поддерживаются не только DLL на C/C++ и Delphi, но и DLL на платформе .NET — C#, VB.Net и других языках. Разбираем упаковку алгоритма на C++ и C#.

Ключевые слова: UDS, Seed&Key, DLL, шаблонный проект, C++, C#, .NET.

В установочном каталоге TSMaster есть шаблонные проекты Visual Studio для упаковки алгоритма Seed&Key на двух языках — C++ и C#. Разработав алгоритм на основе шаблона, вы получите DLL, которую TSMaster загружает напрямую.

1. Упаковка алгоритма Seed&Key на C++

  1. Шаг 1. Откройте папку интерфейсного проекта Seed&Key в установочном каталоге TSMaster (рис. 1-1). Скопируйте проект и добавьте в него свой алгоритм Seed&Key.
  2. Шаг 2. Для упаковки алгоритма на C++ в DLL выберите и откройте проект по пути Win32DLL → GenerateKeyEx (рис. 1-2).
  3. Шаг 3. Чтобы диагностический модуль TSMaster мог загрузить DLL напрямую, она должна реализовывать один из четырёх интерфейсов функций из файла seedNKeyDiag.cpp внутри проекта (рис. 1-3, 1-4).
  4. Шаг 4. Напишите тестовый код по интерфейсу 1 (рис. 1-5, 1-6), выберите конфигурацию Release и платформу x86, затем правой кнопкой по проекту — «Собрать решение» (рис. 1-7).
  5. Шаг 5. После сборки готовый DLL-файл появится в папке проекта в каталоге x86 → Release (рис. 1-8).
  6. Шаг 6. Загрузите готовую DLL и воспользуйтесь проверщиком DLL, чтобы убедиться, что интерфейс загруженной библиотеки корректен (рис. 1-9).
Папка проекта Seed&Key
Рис. 1-1. Папка интерфейсного проекта Seed&Key в каталоге TSMaster
Проект Win32DLL GenerateKeyEx
Рис. 1-2. Проект Win32DLL → GenerateKeyEx
Интерфейсы seedNKeyDiag
Рис. 1-3. Интерфейсы функций seedNKeyDiag.cpp
Четыре интерфейса
Рис. 1-4. Четыре поддерживаемых интерфейса функций
Тестовый код интерфейса 1
Рис. 1-5. Тестовый код по интерфейсу 1
Тестовый код (продолжение)
Рис. 1-6. Тестовый код по интерфейсу 1 (продолжение)
Сборка Release x86
Рис. 1-7. Сборка решения в конфигурации Release, платформа x86
Готовая DLL
Рис. 1-8. Собранная DLL в каталоге x86/Release
Проверщик DLL
Рис. 1-9. Проверка загруженной DLL проверщиком

2. Упаковка алгоритма Seed&Key на C#

  1. Шаг 1. Шаги аналогичны упаковке на C++: выберите и откройте проект по пути DotNet → GenerateKeyEx (рис. 2-1).
  2. Шаг 2. В исходном файле uGenerateKeyExNet.cs представлены три поддерживаемых типа C#-интерфейсов — реализуйте один из них (рис. 2-2, 2-3).
  3. Шаг 3. Напишите тестовый код по интерфейсу 1 (рис. 2-4), выберите Release и пересоберите решение (рис. 2-5).
  4. Шаг 4. После сборки готовая DLL появится в папке проекта в каталоге bin → Release (рис. 2-6).
  5. Шаг 5. Загрузите готовую DLL, отметьте опцию DoNET и проверьте интерфейс проверщиком DLL (рис. 2-7).
Проект DotNet GenerateKeyEx
Рис. 2-1. Проект DotNet → GenerateKeyEx
Интерфейсы C#
Рис. 2-2. Три типа C#-интерфейсов в uGenerateKeyExNet.cs
Сигнатуры интерфейсов
Рис. 2-3. Сигнатуры C#-интерфейсов
Тестовый код C#
Рис. 2-4. Тестовый код по интерфейсу 1 на C#
Сборка решения C#
Рис. 2-5. Пересборка решения в конфигурации Release
DLL в bin/Release
Рис. 2-6. Собранная DLL в каталоге bin/Release
Проверка .NET DLL
Рис. 2-7. Проверка .NET DLL с отмеченной опцией DoNET

Подробный разбор сигнатур интерфейсов Seed&Key и примеры — в первой части руководства по UDS.