ZProtect
Code_Confusion on koodista poikkeava kryptografinen tunniste, jonka avulla voit valita koodista, joka on epäjärjestyksessä
Lisää koodi ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion merkki aloittaaksesi
Lisää koodi ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion merkin loppu
Code_Elimination on koodin puhdistusmerkki, jonka avulla voit valita osan koodista, joka poistetaan muistista suorituksen jälkeen; Tämän merkinnän tarkoitus on estää crackereita dumppaamasta koko ohjelmakoodia muistista.
Lisää koodi ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination tunniste alkaa
Lisää koodi ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination merkki lopussa
Decode_onExec on dynaaminen dekoodausmerkintä, jonka avulla voit valita osan koodista, joka puretaan vain suorituksen yhteydessä; Tämä osa koodista puretaan vain, kun se täytyy suorittaa, ja se salataan ennen ja jälkeen suorituksen
Lisää koodi ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec tagi alkaa
Lisää koodi ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec merkitse loppu
Decode_onReg on rekisteröinnin dekoodaustagi, jonka avulla voit valita osan koodista, joka on purettu kelvollisella avaimella; Jos rekisteröintiavain on virheellinen, tämä osa koodista on aina salattu. Yksinkertaisesti sanottuna tämä osa koodista suoritetaan vain rekisteröidyssä versiossa
Lähdekoodissa voi käyttää lukuisia Decode_onReg-tageja, mutta nämä koodipalat puretaan samaan aikaan kun ne suoritetaan. Rekisteröinnin dekoodaustunnistetta käytetään pääasiassa aktivoimaan rajoitettuja ominaisuuksia rekisteröimättömässä versiossa ja rekisteröimään se täysimittaiseksi versioksi.
Lisää koodi ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg tagi alkaa
Lisää koodi ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg merkitse loppu
Zprotect_VM on virtuaalikoneen salaustagi, jonka avulla voit valita osan koodista, jonka laitetaan virtuaalikoneeseen suoritettavaksi; Virtuaalikoneen käskyjärjestelmä eroaa täysin nykyisistä x86-käskyistä, mikä voi tehokkaasti estää koodin palautuksen ja analyysin
Lisää koodi ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM merkki aloittaaksesi
Lisää koodi ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM merkitse loppu
----------- ZProtect V1.4.9.0 -versiolle---------
VMProtect
Lisää koodi ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP protection start flag
'Avainkoodi
Lisää koodi ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) 'VMP-suojauksen loppulippu
Enigma-salauskielen SDK
Lisää koodi ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 69, 67, 66 })' merkki alkuun
'Avainkoodi
Lisää koodi ({ 235, 10, 69, 67, 82, 79, 78, 69, 69, 88, 69, 67, 69 })' merkki merkin loppuun
NoobyProtect SDK salauskielelle
Lisää koodi ({ 235, 6, 78, 80, 66, 69, 71, 78 })' merkki alkuun
'Avainkoodi
Lisää koodi ({ 235, 6, 78, 80, 69, 78, 68, 80 })' merkki loppuun
Pangolin kutsuu toimivan salauskielen SDK:n DEMO:n
Aseta koodi ({ 235, 3, 214, 215, 1 })' alkuun
'Avainkoodi
Paikkakoodi ({ 235, 3, 214, 215, 0 })' merkitsee merkin lopussa
ASP-salauskieli SDK
Lisää koodi ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' merkki alkuun
'Avainkoodi
Lisää koodi ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' merkin loppuun
Shielden 2.0.1.0
Lisää koodi ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Avainkoodi
Lisää koodi ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Lisää koodi ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Avainkoodi
Lisää koodi ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Lisää koodi ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Avainkoodi
Lisää koodi ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Lisää koodi ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Avainkoodi
Lisää koodi ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Helppo kielen SDK-muunnosmenetelmä ↓
E5.0-staattisen kääntämisen tuella standardeille PE-formaateille on tullut todellisuudeksi ottaa salauskuori-SDK:t käyttöön E-ohjelmissa ohjelmistosuojauksen laadun parantamiseksi.
Salauskuori-SDK:t voidaan karkeasti jakaa kahteen kategoriaan: toinen on toiminnallinen SDK ja toinen suojaava SDK.
1. Toiminnallinen SDK.
Toiminnallista SDK:ta käytetään sen käsittelyynSarjanumeroValidointi, valtuutusajan tarkistus ja muut toiminnalliset toiminnot. Tällä SDK-tyypillä on useita toimintoja, jotka on suoraan sovellettu kuoreen, kuten WL; On myös ulkoisia DLL-malleja, jotka täytyy ottaa käyttöön, kuten pangoliinit.
DLL:issä ilman tulostauluja käytetään ulkoista SDK:ta tuomalla DLL, osoitettava funktio SDK:ssa ja kutsuttava aliohjelman () komento E:ssä, jotta parametrien välitys saadaan helposti päätökseen SDK-funktion palautusarvon saamiseksi.
DLL:ille, joissa on tulostaulut, on ok kutsua niitä DLL-komennolla E.
Niille, jotka jo osaavat kutsua DLL:t, toiminnallisten SDK:iden toiminta on helppo hallita – katso vain shellin API-käsikirjaa.
2. Salattu SDK
Kun salauskuori löytää tietyn SDK-tunnisteen ohjelmistosta, se käyttää kohdennettua menetelmää tämän koodin käsittelyyn parantaakseen kyseisen koodisegmentin turvallisuutta. Tällainen merkintä on luonnostaan parin määrittelemä kokoonpanokoodi!
Helpossa voimme helposti kutsua assembly-koodin insert code () -komennolla. Tämän osan salauskuoren osalta noudatamme seuraavaa menetelmää.
Avaa salauskuoren mukana tuleva SDK ja etsi kieli-SDK-otsikkotiedosto, jota voit lukea. Esimerkiksi alla oleva LCC:n otsikkotiedosto.
Seuraava on ohjelmakoodi:
1 #elif määritelty(__LCC__)
2 /* Toimittanut Rubem Pechansky, 26. helmikuuta 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");
Selittääkseni viimeisissä kahdessa lauseessa, NANOBEGIN ja NANOEND ovat CC-koodikatkelmien merkintöjä C-kielellä, ja näiden kahden merkinnän käärimät koodipätkät ovat CC-suojattuja salauskuorella. NANOBEGIN esitetään assembly-koodissa muodossa 0xEB, 0x03, 0xD6, 0xD7, 0x01, hänen lauseensa on C:n keksadesimaaliesitys ja assembly-lause on esitetty desimaalisena desimaalina E:ssä. Eli meidän täytyy kääntää tämä koodi.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Tällöin NANOBEGIN ilmaistaan E:ssä insertiokoodina ({235, 3, 214, 215, 1}).
|