Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 22775|Svar: 0

[Lättsamt språk] Lätt språk VMP-skydd, olika skyddande skal SDK-kod i Easy-språket

[Kopiera länk]
Publicerad på 2014-11-29 15:59:19 | | |
ZProtect
Code_Confusion är en kod som är utanför ordning och som låter dig välja en del av koden som är ur ordning
Infoga kod ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion markera för att börja
Infoga kod ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion slutet av markeringen
Code_Elimination är en kodrensningsmarkör som låter dig välja en del av koden som ska tas bort från minnet efter körning; Syftet med att använda denna markering är att förhindra att crackers dumpar hela programkoden från minnet.
Infoga kod ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination tagg börjar
Infoga kod ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination markera i slutet
Decode_onExec är en dynamisk avkodningsmarkering som låter dig välja en del av koden som endast dekrypteras när den körs; Denna del av koden avkodas endast när den behöver exekveras och krypteras före och efter exekvering
Infoga kod ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec taggstart
Infoga kod ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec markera slutet
Decode_onReg är en registreringsavkodningstagg som låter dig välja en del av koden som är dekrypterad med en giltig nyckel; Om registreringsnyckeln är felaktig kommer denna del av koden alltid att vara krypterad. På lekmannaspråk exekveras denna del av koden endast i den registrerade versionen
Valfritt antal Decode_onReg taggar kan användas i källkoden, men dessa kodfragment dekrypteras samtidigt som de exekveras. Registreringsavkodningstaggen används främst för att aktivera begränsade funktioner i den oregistrerade versionen för att registrera den som en fullversion.
Infoga kod ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg tagg börjar
Infoga kod ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg markera slutet
Zprotect_VM är en krypteringstagg för virtuella maskiner som låter dig välja en del av koden att lägga in i den virtuella maskinen för att köras; Den virtuella maskinens instruktionssystem skiljer sig helt från de befintliga x86-instruktionerna, vilket effektivt kan förhindra kodåterställning och analys
Infoga kod ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM markera för att börja
Infoga kod ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM markera slut
----------- för ZProtect V1.4.9.0-versionen---------
VMProtect
Infoga koden ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP-skyddsstartflagga
'Nyckelkod
Infoga koden ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP-skyddsändflagga
SDK:n för Enigma-krypteringsspråket
Infoga kod ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 69, 67, 66 })' markering i början
'Nyckelkod
Infoga kod ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 67, 69 })' märke i slutet av markeringen

NoobyProtect SDK för krypteringsspråket
Infoga kod ({ 235, 6, 78, 80, 66, 69, 71, 78 })-markering i början
'Nyckelkod
Infoga kod ({ 235, 6, 78, 80, 69, 78, 68, 80 })-markering i slutet

Pangolin kallar DEMO:n för det funktionella krypteringsspråket SDK
Placera kodmarkeringen ({ 235, 3, 214, 215, 1 })' i början
'Nyckelkod
Platskod ({ 235, 3, 214, 215, 0 })' märke i slutet av markeringen
ASP-krypteringsspråket SDK
Infoga kod ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })-markering i början
'Nyckelkod
Infoga kod ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' i slutet av markeringen

Shielden 2.0.1.0
Infoga kod ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Nyckelkod
Infoga kod ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END

Infoga kod ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Nyckelkod
Infoga kod ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Infoga kod ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Nyckelkod
Infoga kod ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Infoga kod ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Nyckelkod
Infoga kod ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END

Enkel SDK-konverteringsmetod ↓
Med stöd av statisk E5.0-kompilering för standard-PE-format har det blivit verklighet att införa krypteringsskal-SDK:er i E-program för att förbättra kvaliteten på mjukvaruskyddet.
Krypteringsskal-SDK:er kan grovt delas in i två kategorier, en är funktionell SDK och den andra är skyddande SDK.
1. Funktionellt SDK.
Functional SDK används för att hantera detSerienummerValidering, verifiering av auktorisationstid och andra funktionella operationer. Denna typ av SDK har olika funktioner direkt applicerade i skalet, såsom WL; Det finns också externa DLL-filer som behöver introduceras, såsom pangoliner.
För DLL:er utan utdatatabeller, med hjälp av import extern SDK, behöver vi ladda DLL:n, adressera funktionen i SDK:n och anropa kommandot subprogram () i E för att enkelt slutföra operationen att skicka parametrar och få returvärdet för SDK-funktionen.
För DLL:er med utdatatabeller är det okej att anropa dem med DLL-kommandot E.
För dem som redan vet hur man anropar DLL:er kan man säga att funktionen av SDK:er är lätt att kontrollera, ta bara en titt på den specifika API-manualen för skalet.
2. Krypterat SDK
Efter att krypteringsskalet har upptäckt en specifik SDK-tagg i mjukvaran kommer det att använda en riktad metod för att bearbeta denna kodbit för att förbättra säkerheten för det specifika kodsegmentet. Denna typ av markering är naturligtvis en pardefinierad assemblerkod!
I den enkla kan vi enkelt anropa assemblerkoden med kommandot insert code (). Specifikt för krypteringsskalet med denna del följer vi följande metod.
Öppna SDK:t som följer med krypteringsskalet och hitta en SDK-headerfil som du kan läsa. Till exempel headerfilen för LCC nedan.
Följande är programkoden:
1 #elif definierad(__LCC__)
2 /* Tillhandahållet av Rubem Pechansky, 26 februari 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");
För att förklara i de två sista meningarna: NANOBEGIN och NANOEND är CC-kodsnippet-markups på C-språket, och kodsnippetarna som wrapps med dessa två markups kommer att CC-skyddas av krypteringsskalet. NANOBEGIN representeras av assemblerkod som 0xEB, 0x03, 0xD6, 0xD7, 0x01, hans sats är den hexadecimala representationen av C, och assembly-uttalandet representeras i decimaldecimal i E. Det vill säga, vi måste översätta denna kod.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Då uttrycks NANOBEGIN i E som en insättningskod ({235, 3, 214, 215, 1}).




Föregående:WP8.1 GDR2/Win10 (WP10) kommer att vara mer personligt anpassat
Nästa:Första versionen, Houpu Information Technology Engineer Training System - Mock Examination System (Perfekt kompatibel med Win7)
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com