ZProtect
Code_Confusion je kryptografický tag kódu mimo poradia, ktorý vám umožňuje vybrať časť kódu, ktorá je v nesprávnom poradí
Vložte kód ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion značku na začiatok
Vložte kód ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion koniec značky
Code_Elimination je marker na vymazanie kódu, ktorý vám umožňuje vybrať časť kódu, ktorá sa po spustení odstráni z pamäte; Účelom použitia tohto značkovania je zabrániť crackerom v tom, aby vyhadzovali celý programový kód z pamäte.
Vložte kód ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination tag začína
Vložte kód ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination na konci
Decode_onExec je dynamické dekódovacie značkovanie, ktoré vám umožňuje vybrať časť kódu, ktorá je dešifrovaná iba pri spustení; Táto časť kódu sa dekóduje len vtedy, keď je potrebné ju spustiť, a je šifrovaná pred aj po vykonaní
Vložiť kód ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec tag začína
Vložiť kód ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec označiť koniec
Decode_onReg je registračný dekódovací tag, ktorý vám umožňuje vybrať časť kódu, ktorá je dešifrovaná platným kľúčom; Ak je registračný kľúč nesprávny, táto časť kódu bude vždy zašifrovaná. Jednoducho povedané, táto časť kódu sa vykonáva iba v registrovanej verzii
V zdrojovom kóde je možné použiť ľubovoľný počet Decode_onReg tagov, ale tieto útržky kódu sa dešifrujú súčasne s ich vykonávaním. Registračný dekódovací tag sa hlavne používa na aktiváciu obmedzených funkcií v neregistrovanej verzii, aby sa zaregistrovala ako plná verzia.
Vložte kód ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg tag začína
Vložte kód ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg označiť koniec
Zprotect_VM je šifrovací tag virtuálneho stroja, ktorý vám umožňuje vybrať časť kódu, ktorú chcete vložiť do virtuálneho stroja na spustenie; Inštrukčný systém virtuálneho stroja je úplne odlišný od existujúcich x86 inštrukcií, čo môže efektívne zabrániť obnove a analýze kódu
Vložte kód ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM označte na začiatok
Vložiť kód ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM označiť koniec
----------- pre verziu 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 }) ' VMP ochranná štartová vlajka
'Kód kľúča
Vložte kód ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP ochrana koniec
SDK šifrovacieho jazyka Enigma
Vložte kód ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 69, 67, 66 })' na začiatku
'Kód kľúča
Vložte kód ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69 }) na koniec značky
NoobyProtect SDK pre šifrovací jazyk
Vložte kód ({ 235, 6, 78, 80, 66, 69, 71, 78 })' na začiatku
'Kód kľúča
Vložte kód ({ 235, 6, 78, 80, 69, 78, 80 })' na konci
Pangolin volá DEMO funkčného šifrovacieho jazyka SDK
Na začiatok umiestnite značku kódu ({ 235, 3, 214, 215, 1 })'
'Kód kľúča
Na konci značky označte kód miesta ({ 235, 3, 214, 215, 0 })
ASP šifrovací jazyk SDK
Vložte kód ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' na začiatku
'Kód kľúča
Vložte kód ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' na koniec značky
Shielden 2.0.1.0
Vložiť kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Kód kľúča
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 kľúča
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 kľúča
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Vložiť kód ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Kód kľúča
Vložte kód ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Metóda konverzie Easy language SDK ↓
S podporou statickej kompilácie E5.0 pre štandardné PE formáty sa stalo realitou zavádzať šifrovacie shell SDK v E programoch na zlepšenie kvality softvérovej ochrany.
SDK šifrovacieho shellu možno približne rozdeliť do dvoch kategórií, jedna je funkčné SDK a druhá ochranné SDK.
1. Funkčné SDK.
Na jeho spracovanie sa používa funkčné SDKSériové čísloValidácia, overenie času autorizácie a ďalšie funkčné operácie. Tento typ SDK má rôzne funkcie priamo aplikované v shelle, ako napríklad WL; Sú tu aj externé DLL, ktoré je potrebné zaviesť, napríklad pangolíny.
Pre DLL bez výstupných tabuliek, pomocou importného externého SDK je potrebné načítať DLL, adresovať funkciu v SDK a zavolať príkaz podprogramu () v E, aby sme jednoducho dokončili operáciu odovzdávania parametrov na získanie návratovej hodnoty funkcie SDK.
Pre DLL s výstupnými tabuľkami je v poriadku volať ich príkazom DLL E.
Pre tých, ktorí už vedia, ako volať DLL, sa dá povedať, že prevádzka funkčných SDK je jednoduchá na ovládanie, stačí sa pozrieť na konkrétny API manuál shellu.
2. Šifrované SDK
Po tom, čo šifrovací shell objaví konkrétny SDK tag v softvéri, použije cielenú metódu na spracovanie tohto kódu na zlepšenie bezpečnosti konkrétneho kódového segmentu. Tento druh značkovania je prirodzene párom definovaný assemblerový kód!
V jednoduchom režime môžeme jednoducho zavolať assembler kód pomocou príkazu insert code (). Špecificky pre šifrovací shell používajúci tento kúsok postupujeme nasledujúcou metódou.
Otvor SDK, ktoré je súčasťou šifrovacieho shellu, a nájdi hlavičkový súbor jazykového SDK, ktorý si môžeš prečítať. Napríklad hlavičkový súbor LCC nižšie.
Nasleduje programový kód:
1 #elif definovaný(__LCC__)
2 /* Poskytol Rubem Pechansky, 26. februára 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");
Aby som to vysvetlil v posledných dvoch vetách, NANOBEGIN a NANOEND sú CC kódové označenia v jazyku C a kódové útržky obalené týmito dvoma značkami budú CC chránené šifrovacím shellom. NANOBEGIN je v assemblerovom kóde reprezentovaný ako 0xEB, 0x03, 0xD6, 0xD7, 0x01, jeho veta je hexadecimálna reprezentácia písmena C a assembler príkaz je v E zastúpený v desatinnom čísle. To znamená, že musíme tento kód preložiť.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Potom sa NANOBEGIN vyjadruje v E ako vkladací kód ({235, 3, 214, 215, 1}).
|