ZProtect
Code_Confusion — это криптографический тег кода вне порядка, который позволяет выбрать часть кода, находящуюся не в порядке
Вставьте код ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion отметки для начала
Вставьте код ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion конце знака
Code_Elimination — это маркер очистки кода, который позволяет выбрать часть кода для удаления из памяти после запуска; Цель использования этой разметки — предотвратить выброс целого программного кода взломщиками из памяти.
Вставьте код ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination тег начинается
Вставьте код ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination метку в конце
Decode_onExec — это динамическая разметка для декодирования, позволяющая выбрать часть кода, расшифрованную только при выполнении; Эта часть кода декодируется только в момент выполнения и шифруется до и после выполнения
Вставить код ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec начинается тег
Вставьте код ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec отметить конец
Decode_onReg — это тег декодирования регистрации, который позволяет выбрать часть кода, расшифрованную с помощью действительного ключа; Если регистрационный ключ неверен, эта часть кода всегда будет зашифрованной. Простым языком, эта часть кода выполняется только в зарегистрированной версии
В исходном коде можно использовать любое количество Decode_onReg-тегов, но эти фрагменты кода расшифровываются одновременно с выполнением. Тег декодирования регистрации в основном используется для активации ограниченных функций в незарегистрированной версии с целью регистрации как полной версии.
Вставьте код ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg тег начинается
Вставьте код ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg отметить конец
Zprotect_VM — это тег шифрования виртуальной машины, который позволяет выбрать часть кода для загрузки в виртуальную машину; Система инструкций виртуальной машины полностью отличается от существующих x86-инструкций, что эффективно предотвращает восстановление и анализ кода
Вставьте код ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM отметку для начала
Вставьте код ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM отметить конец
----------- для версии ZProtect V1.4.9.0---------
VMProtect
Вставьте код ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' флаг запуска защиты VMP
«Код ключа
Вставьте код ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' флаг защиты VMP
SDK языка шифрования Enigma
Вставьте код ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 69, 69, 67, 66 })' в начале
«Код ключа
Вставьте код ({ 235, 10, 69, 67, 82, 79, 78, 69, 69, 88, 69, 69, 69, 67, 69 })' в конце знака
NoobyProtect SDK для языка шифрования
Вставьте знак кода ({ 235, 6, 78, 80, 66, 69, 71, 78 })' в начале
«Код ключа
Вставьте марку кода ({ 235, 6, 78, 80, 69, 78, 68, 80 })' в конце
Pangolin вызывает DEMO функционального языка шифрования SDK
Поставьте знак кода ({ 235, 3, 214, 215, 1 })' в начале
«Код ключа
Код места ({ 235, 3, 214, 215, 0 })' в конце отметки
Язык шифрования ASP SDK
Вставьте код ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' в начале
«Код ключа
Вставьте код ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' в конце знака
Шилден 2.0.1.0
Вставьте код ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Код клавиши
Вставьте код ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Вставьте код ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Код клавиши
Вставьте код ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Вставьте код ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Код клавиши
Вставьте код ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Вставьте код ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Код клавиши
Вставьте код ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Метод преобразования SDK на простом языке ↓
С поддержкой статической компиляции E5.0 для стандартных форматов PE, стало реальностью внедрение SDK оболочек шифрования в программы E для повышения качества защиты программного обеспечения.
SDK для оболочки шифрования можно примерно разделить на две категории: одна — функциональная SDK, другая — защитная.
1. Функциональный SDK.
Для этого используется функциональный SDKСерийный номерВалидация, проверка времени авторизации и другие функциональные операции. Этот тип SDK выполняет различные функции, непосредственно применяемые в оболочке, например, WL; Существуют также внешние DLL, которые необходимо вводить, например, панголины.
Для DLL без таблиц вывода, используя импортный внешний SDK, необходимо загрузить DLL, адресовать функцию в SDK и вызвать команду подпрограммы () в E, чтобы легко завершить операцию передачи параметров и получить возвращаемое значение функции SDK.
Для DLL с таблицами вывода можно вызывать их командой DLL E.
Для тех, кто уже умеет вызывать DLL, работу функциональных SDK можно легко контролировать, просто посмотрите конкретное руководство по API оболочки.
2. Зашифрованный SDK
После того как оболочка шифрования обнаружит конкретный тег SDK в программном обеспечении, она использует целенаправленный метод обработки этого фрагмента кода с целью повышения безопасности конкретного сегмента кода. Такой тип разметки, естественно, является парным ассемблерным кодом!
В простом режиме мы можем легко вызвать ассемблерный код с помощью команды insert code () Специфично для шифрования с использованием этого элемента мы следуем следующему методу.
Откройте SDK, который идёт с оболочкой шифрования, и найдите заголовок SDK языка, который можно прочитать. Например, заголовочный файл LCC ниже.
Ниже приведён код программы:
1 #elif определено(__LCC__)
2 /* Предоставлено Рубемом Печански, 26 февраля 2003 */
3 #define SECURESTART _asm(".byte 0xEB,0x03,0xD6,0xD6,0x00");
4 #define SECUREEND _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
5 #define SECUREBEGIN_A _asm(".байт 0xEB,0x03,0xD6,0xD6,0x01");
6 #define SECUREEND_A _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
7 #define SECUREBEGIN_B _asm(".байт 0xEB,0x03,0xD6,0xD6,0x02");
8 #define SECUREEND_B _asm(".байт 0xEB,0x03,0xD6,0xD6,0xFF");
9 #define SECUREBEGIN_C _asm(".байт 0xEB,0x03,0xD6,0xD6,0x03");
10 #define SECUREEND_C _asm(".байт 0xEB,0x03,0xD6,0xD6,0xFF");
11 #define SECUREBEGIN_D _asm(".байт 0xEB,0x03,0xD6,0xD6,0x04");
12 #define SECUREEND_D _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
13 #define SECUREBEGIN_E _asm(".байт 0xEB,0x03,0xD6,0xD6,0x05");
14 #define SECUREEND_E _asm(".байт 0xEB,0x03,0xD6,0xD6,0xFF");
15 #define SECUREBEGIN_F _asm(".байт 0xEB,0x03,0xD6,0xD6,0x06");
16 #define SECUREEND_F _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
17 #define SECUREBEGIN_G _asm(".byte 0xEB,0x03,0xD6,0xD6,0x07");
18 #define SECUREEND_G _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
19 #define SECUREBEGIN_H _asm(".байт 0xEB,0x03,0xD6,0xD6,0x08");
20 #define SECUREEND_H _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
21 #define SECUREBEGIN_I _asm(".байт 0xEB,0x03,0xD6,0xD6,0x09");
22 #define SECUREEND_I _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
23 #define SECUREBEGIN_J _asm(".байт 0xEB,0x03,0xD6,0xD6,0x0A");
24 #define SECUREEND_J _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
25 #define SECUREBEGIN_K _asm(".байт 0xEB,0x03,0xD6,0xD6,0x0B");
26 #define SECUREEND_K _asm(".байт 0xEB,0x03,0xD6,0xD6,0xFF");
27 #define NANOBEGIN _asm(".байт 0xEB,0x03,0xD6,0xD7,0x01");
28 #define НАНОКОНЕЦ _asm(".байт 0xEB,0x03,0xD6,0xD7,0x00");
Чтобы объяснить в последних двух предложениях, NANOBEGIN и NANOEND — это разметки фрагментов кода CC на языке C, и фрагменты кода, обёрнутые этими двумя разметками, будут защищены CC оболочкой шифрования. NANOBEGIN представлен кодом ассемблера как 0xEB, 0x03, 0xD6, 0xD7, 0x01, его предложение — шестнадцатеричное представление C, а оператор assembly представлен в десятичной десятичной в E. То есть нам нужно перевести этот код.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Тогда NANOBEGIN выражается в E как код вставки ({235, 3, 214, 215, 1}).
|