ZProtect
Code_Confusion adalah tag kriptografi kode yang tidak berurutan yang memungkinkan Anda memilih bagian kode yang tidak berurutan
Masukkan kode ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion tanda untuk memulai
Masukkan kode ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion akhir tanda
Code_Elimination adalah penanda pembersihan kode yang memungkinkan Anda memilih sebagian kode yang akan dihapus dari memori setelah dijalankan; Tujuan penggunaan markup ini adalah untuk mencegah cracker membuang kode program lengkap dari memori.
Sisipkan kode ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination tag dimulai
Masukkan kode ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' tanda Code_Elimination di akhir
Decode_onExec adalah markup decoding dinamis yang memungkinkan Anda memilih bagian kode yang hanya didekripsi saat dieksekusi; Bagian kode ini didekodekan hanya ketika perlu dieksekusi, dan dienkripsi sebelum dan sesudah eksekusi
Sisipkan kode ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec tag dimulai
Masukkan kode ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec tandai akhir
Decode_onReg adalah tag decoding pendaftaran yang memungkinkan Anda memilih sebagian kode yang didekripsi dengan kunci yang valid; Jika kunci pendaftaran salah, maka bagian kode ini akan selalu dienkripsi. Dalam istilah awam, bagian kode ini hanya dieksekusi dalam versi terdaftar
Sejumlah tag Decode_onReg dapat digunakan dalam kode sumber, tetapi cuplikan kode ini didekripsi bersamaan dengan eksekusi. Tag decoding pendaftaran terutama digunakan untuk mengaktifkan fitur terbatas dalam versi yang tidak terdaftar untuk mendaftarkannya sebagai versi lengkap.
Sisipkan kode ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg tag dimulai
Masukkan kode ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg tandai akhir
Zprotect_VM adalah tag enkripsi komputer virtual yang memungkinkan Anda memilih sebagian kode untuk dimasukkan ke dalam komputer virtual untuk dijalankan; Sistem instruksi mesin virtual benar-benar berbeda dari instruksi x86 yang ada, yang secara efektif dapat mencegah pemulihan dan analisis kode
Masukkan kode ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM tanda untuk memulai
Sisipkan kode ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM tanda akhir
----------- untuk versi ZProtect V1.4.9.0---------
VMProtect
Masukkan kode ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' Bendera mulai perlindungan VMP
'Kode kunci
Masukkan kode ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' Bendera akhir perlindungan VMP
SDK bahasa enkripsi Enigma
Masukkan kode ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 69, 69, 67, 66 })' di awal
'Kode kunci
Masukkan kode ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 88, 69, 67, 69 })' di akhir tanda
NoobyProtect SDK untuk bahasa enkripsi
Masukkan kode ({ 235, 6, 78, 80, 66, 69, 71, 78 })' di awal
'Kode kunci
Masukkan kode ({ 235, 6, 78, 80, 69, 78, 68, 80 })' di akhir
Pangolin memanggil DEMO SDK bahasa enkripsi fungsional
Tempatkan tanda kode ({ 235, 3, 214, 215, 1 })' di awal
'Kode kunci
Tempatkan kode ({ 235, 3, 214, 215, 0 })' di akhir tanda
SDK bahasa enkripsi ASP
Masukkan kode ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' di awal
'Kode kunci
Masukkan kode ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' di akhir tanda
Perisai 2.0.1.0
Sisipkan kode ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Kode Kunci
Sisipkan kode ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Masukkan kode ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Kode kunci
Sisipkan kode ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Masukkan kode ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Kode kunci
Sisipkan kode ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Sisipkan kode ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Kode Kunci
Sisipkan kode ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Metode konversi SDK bahasa yang mudah ↓
Dengan dukungan kompilasi statis E5.0 untuk format PE standar, telah menjadi kenyataan untuk memperkenalkan SDK shell enkripsi dalam program E untuk meningkatkan kualitas perlindungan perangkat lunak.
SDK shell enkripsi secara kasar dapat dibagi menjadi dua kategori, satu adalah SDK fungsional dan yang lainnya adalah SDK pelindung.
1. SDK Fungsional.
SDK fungsional digunakan untuk menanganinyaNomor seriValidasi, verifikasi waktu otorisasi, dan operasi fungsional lainnya. Jenis SDK ini memiliki berbagai fungsi yang diterapkan langsung di shell, seperti WL; Ada juga DLL eksternal yang perlu diperkenalkan, seperti trenggiling.
Untuk DLL tanpa tabel output, menggunakan SDK eksternal impor, kita perlu memuat DLL, menangani fungsi di SDK, dan memanggil perintah subprogram () di E untuk dengan mudah menyelesaikan operasi meneruskan parameter untuk mendapatkan nilai pengembalian fungsi SDK.
Untuk DLL dengan tabel output, tidak apa-apa untuk memanggilnya dengan perintah DLL E.
Bagi yang sudah tahu cara memanggil DLL, pengoperasian SDK fungsional bisa dikatakan mudah dikontrol, lihat saja manual API khusus dari shell.
2. SDK terenkripsi
Setelah shell enkripsi menemukan tag SDK tertentu dalam perangkat lunak, shell akan menggunakan metode yang ditargetkan untuk memproses bagian kode ini guna meningkatkan keamanan segmen kode tertentu. Markup semacam ini secara alami merupakan kode perakitan yang ditentukan pasangan!
Dalam hal yang mudah, kita dapat dengan mudah memanggil kode perakitan menggunakan perintah insert code (). Khusus untuk shell enkripsi yang menggunakan bagian ini, kami mengikuti metode berikut.
Buka SDK yang disertakan dengan shell enkripsi dan temukan file header SDK bahasa yang dapat Anda baca. Misalnya, file header LCC di bawah ini.
Berikut ini adalah kode programnya:
1 #elif didefinisikan(__LCC__)
2 /* Disediakan oleh Rubem Pechansky, 26Feb2003 */
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");
Untuk menjelaskan dalam dua kalimat terakhir, NANOBEGIN dan NANOEND adalah markup cuplikan kode CC dalam bahasa C, dan cuplikan kode yang dibungkus oleh kedua markup ini akan dilindungi CC oleh shell enkripsi. NANOBEGIN diwakili oleh kode perakitan sebagai 0xEB, 0x03, 0xD6, 0xD7, 0x01, kalimatnya adalah representasi heksadesimal dari C, dan pernyataan perakitan diwakili dalam desimal desimal dalam E. Artinya, kita perlu menerjemahkan kode ini.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
Kemudian NANOBEGIN dinyatakan dalam E sebagai kode penyisipan ({235, 3, 214, 215, 1}).
|