ZProtect
Code_Confusion je kódový kryptografický tag v nepořadí, který vám umožní vybrat část kódu, která je v nepořadí
Vložte kód ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion značku pro začátek
Vložte kód ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion konec značky
Code_Elimination je značka pro vyčištění kódu, která vám umožní vybrat část kódu, která se po spuštění odstraní z paměti; Účelem použití tohoto značení je zabránit crackerům v hromadění celého programového kódu z paměti.
Vložte kód ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination začíná tag
Vložte kód ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination značek na konci
Decode_onExec je dynamický dekódovací značkovací systém, který vám umožní vybrat část kódu, která je dešifrována pouze při vykonání; Tato část kódu je dekódována pouze tehdy, když je potřeba ji spustit, a je šifrována před a po provedení
Vložte kód ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec začíná tag
Vložte kód ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec označit konec
Decode_onReg je registrační dekódovací tag, který vám umožní vybrat část kódu, která je dešifrována platným klíčem; Pokud je registrační klíč nesprávný, tato část kódu bude vždy zašifrována. Jednoduše řečeno, tato část kódu se vykonává pouze v registrované verzi
Ve zdrojovém kódu lze použít libovolný počet Decode_onReg tagů, ale tyto útržky kódu jsou dešifrovány současně s jejich vykonáním. Registrační dekódovací tag se používá především k aktivaci omezených funkcí v neregistrované verzi, aby byla registrována jako plná verze.
Vložte kód ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg tag začíná
Vložte kód ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg označit konec
Zprotect_VM je šifrovací tag virtuálního stroje, který vám umožňuje vybrat část kódu, kterou vložíte do virtuálního stroje k běhu; Instrukční systém virtuálního stroje je zcela odlišný od stávajících x86 instrukcí, což může účinně zabránit obnově a analýze kódu
Vložte kód ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM označte pro začátek
Vložit kód ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM označit konec
----------- pro verzi ZProtect V1.4.9.0---------
VMProtect
Vložte kód ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' příznak začátku ochrany VMP
'Kód klíče
Vložte kód ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP ochrana konec
SDK šifrovacího jazyka Enigma
Vložte kód ({ 235, 10, 69, 67, 82, 79, 78, 69, 69, 69, 69, 67, 66 })' na začátku
'Kód klíče
Vložte kód ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 88, 69, 67, 69 }) na konci značky
NoobyProtect SDK pro šifrovací jazyk
Vložte kód ({ 235, 6, 78, 80, 66, 69, 71, 78 })' na začátek
'Kód klíče
Vložte kód ({ 235, 6, 78, 80, 69, 78, 80 })' na konci
Pangolin nazývá DEMO funkčního šifrovacího jazyka SDK
Na začátek umístěte značku kódu ({ 235, 3, 214, 215, 1 })'
'Kód klíče
Na konec značky označte kód ({ 235, 3, 214, 215, 0 })'
ASP šifrovací jazyk SDK
Vložte kód ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' na začátku
'Kód klíče
Vložte kód ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' na konec značky
Shielden 2.0.1.0
Vložte kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Klíčový kód
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Vložte kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Kód klíče
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Vložte kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Kód klíče
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Vložte kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Klíčový kód
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Metoda převodu do SDK do Easy language ↓
S podporou statické kompilace E5.0 pro standardní PE formáty se stalo realitou zavádět šifrovací shell SDK v programech E za účelem zlepšení kvality softwarové ochrany.
SDK šifrovací skořepiny lze zhruba rozdělit do dvou kategorií, jednu je funkční SDK a druhou ochranné SDK.
1. Funkční SDK.
K jeho zpracování se používá funkční SDKSériové čísloValidace, ověřování času autorizace a další funkční operace. Tento typ SDK má různé funkce přímo aplikované v shellu, například WL; Jsou tu také externí DLL, které je třeba zavést, například pangolini.
Pro DLL bez výstupních tabulek je pomocí importního externího SDK potřeba načíst DLL, adresovat funkci v SDK a zavolat příkaz podprogramu () v E, abychom snadno dokončili operaci předávání parametrů pro získání návratové hodnoty funkce SDK.
Pro DLL s výstupními tabulkami je v pořádku je volat příkazem DLL E.
Pro ty, kteří už umí volat DLL, lze říct, že provoz funkčních SDK je snadno ovladatelný, stačí se podívat do konkrétního manuálu API shellu.
2. Šifrované SDK
Poté, co šifrovací shell objeví konkrétní SDK tag v softwaru, použije cílenou metodu k zpracování tohoto kódu a tím zlepší bezpečnost konkrétního kódového segmentu. Tento druh značkování je přirozeně párově definovaný assembler!
V jednoduché verzi můžeme snadno volat assemblerový kód pomocí příkazu insert code () (). Specifické pro šifrovací shell používající tento kus používáme následující metodu.
Otevřete SDK, které je součástí šifrovacího shellu, a najděte hlavičku jazykového SDK, kterou můžete číst. Například níže je hlavičkový soubor LCC.
Následuje kód programu:
1 #elif defined(__LCC__)
2 /* Poskytnuto Rubem Pechanskym, 26. února 2003 */
3 #define SECUREBEGIN _asm(".byte 0xEB,0x03,0xD6,0xD6,0x00");
4 #define SECUREEND _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
5 #define SECUREBEGIN_A _asm(".byte 0xEB,0x03,0xD6,0xD6,0x01");
6 #define SECUREEND_A _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
7 #define SECUREBEGIN_B _asm(".byte 0xEB,0x03,0xD6,0xD6,0x02");
8 #define SECUREEND_B _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
9 #define SECUREBEGIN_C _asm(".byte 0xEB,0x03,0xD6,0xD6,0x03");
10 #define SECUREEND_C _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
11 #define SECUREBEGIN_D _asm(".byte 0xEB,0x03,0xD6,0xD6,0x04");
12 #define SECUREEND_D _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
13 #define SECUREBEGIN_E _asm(".byte 0xEB,0x03,0xD6,0xD6,0x05");
14 #define SECUREEND_E _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
15 #define SECUREBEGIN_F _asm(".byte 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(".byte 0xEB,0x03,0xD6,0xD6,0x08");
20 #define SECUREEND_H _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
21 #define SECUREBEGIN_I _asm(".byte 0xEB,0x03,0xD6,0xD6,0x09");
22 #define SECUREEND_I _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
23 #define SECUREBEGIN_J _asm(".byte 0xEB,0x03,0xD6,0xD6,0x0A");
24 #define SECUREEND_J _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
25 #define SECUREBEGIN_K _asm(".byte 0xEB,0x03,0xD6,0xD6,0x0B");
26 #define SECUREEND_K _asm(".byte 0xEB,0x03,0xD6,0xD6,0xFF");
27 #define NANOBEGIN _asm(".byte 0xEB,0x03,0xD6,0xD7,0x01");
28 #define NANOEND _asm(".byte 0xEB,0x03,0xD6,0xD7,0x00");
Abych vysvětlil v posledních dvou větách, NANOBEGIN a NANOEND jsou CC kódové značkování v jazyce C a kódové útržky obalené těmito dvěma značkami budou CC chráněny šifrovacím shellem. NANOBEGIN je reprezentován assemblerovým kódem jako 0xEB, 0x03, 0xD6, 0xD7, 0x01, jeho věta je hexadecimální reprezentací C a assemblerový příkaz je v E zaznamenán v desetinném čísle. To znamená, že musíme tento kód přeložit.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Pak je NANOBEGIN vyjádřen v E jako kód pro vložení ({235, 3, 214, 215, 1}).
|