ZProtect
Code_Confusion, sıradan çıkmış bir kod bölümü seçmenizi sağlayan kod dışı bir kriptografik etikettir
Kod ekle ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Başlatmak için Code_Confusion işareti
Kod gir ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' işaretin Code_Confusion sonu
Code_Elimination, çalıştırıldıktan sonra bellekten çıkarılacak bir kod bölümünü seçmenizi sağlayan bir kod temizleme işaretçisidir; Bu işaretlemenin amacı, cracker'ların tüm program kodunu bellekten boşaltmasını önlemektir.
Kod ekle ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination etiketi başlıyor
Kod ekle ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination işareti sonunda
Decode_onExec, yalnızca çalıştırıldığında çözülen bir kod bölümünü seçmenize olanak tanıyan dinamik bir kod çözme işaretlemesidir; Bu kodun bu kısmı yalnızca çalıştırılması gerektiğinde çözülür ve yürütme öncesi ve sonrası şifrelenir
Kod ekle ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec etiket başlar
Kod ekle ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec sonu işaretle
Decode_onReg, geçerli bir anahtarla çözülen kodun bir bölümünü seçmenizi sağlayan bir kayıt kod çözme etiketidir; Kayıt anahtarı yanlışsa, bu kodun bu kısmı her zaman şifrelenmiş olur. Sade bir ifadeyle, bu kodun bu kısmı yalnızca kayıtlı versiyonda çalıştırılır
Kaynak kodda herhangi bir sayıda Decode_onReg etiketi kullanılabilir, ancak bu kod parçaları yürütüldükleriyle aynı anda çözülür. Kayıt kod çözme etiketi, esas olarak kayıtsız versiyondaki kısıtlı özellikleri etkinleştirmek ve tam sürüm olarak kaydetmek için kullanılır.
Kod gir ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg etiket başlıyor
Kod ekle ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg sonu işaretle
Zprotect_VM, çalıştırmak için sanal makineye koymak için bir kod bölümünü seçmenize olanak tanıyan bir sanal makine şifreleme etiketidir; Sanal makinenin komut sistemi, mevcut x86 komutlarından tamamen farklıdır ve bu da kod geri yükleme ve analizi etkili bir şekilde engelleyebilir
Kod ekle ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Başlatmak için Zprotect_VM işareti
Kod ekle ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM işaret sonu
----------- ZProtect V1.4.9.0 sürümü için---------
VMProtect
Kodu ekle ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) 'VMP koruma başlatma bayrağı
'Anahtar kodu
Kodu ekle ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) 'VMP koruma son bayrağı
Enigma şifreleme dilinin SDK'sı
Kod ({ 235, 10, 69, 67, 82, 79, 78, 69, 69, 69, 67, 66 })' işaretini başta ekle
'Anahtar kodu
Kod ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 69 })' işareti işareti ekleyin
Şifreleme dili için NoobyProtect SDK
Kod ({ 235, 6, 78, 80, 66, 69, 71, 78 })' işaretini başta ekleyin
'Anahtar kodu
Kod ({ 235, 6, 78, 80, 69, 78, 68, 80 })' işaretini sonuna ekleyin
Pangolin, işlevsel şifreleme dili SDK'nın DEMO'sunu çağırır
Kod ({ 235, 3, 214, 215, 1 })' işaretini başta koyun
'Anahtar kodu
Noktanın sonunda yer kodu ({ 235, 3, 214, 215, 0 })' işareti
ASP şifreleme dili SDK
Kod ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' işaretini başlat
'Anahtar kodu
Kod ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' işaretinin sonuna ekleyin
Kalkan 2.0.1.0
Kod ekle ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' Anahtar Kodu
Kod gir ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Kod gir ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
Anahtar kodu
Kod gir ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Kod gir ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
Anahtar kodu
Kod gir ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Kod ekle ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' Anahtar Kodu
Kod gir ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
Kolay dil SDK dönüştürme yöntemi ↓
Standart PE formatları için E5.0 statik derleme desteğiyle, yazılım korumasının kalitesini artırmak için E programlarında şifreleme kabuğu SDK'larının kullanılması gerçeğe dönüştü.
Şifreleme kabuğu SDK'ları yaklaşık olarak iki kategoriye ayrılabilir: biri fonksiyonel SDK, diğeri koruyucu SDK'dır.
1. Fonksiyonel SDK.
Bunu yönetmek için fonksiyonel SDK kullanılırSeri numarasıDoğrulama, yetkilendirme süresi doğrulaması ve diğer fonksiyonel işlemler. Bu tür SDK, shell'de doğrudan uygulanan çeşitli işlevlere sahiptir; örneğin WL; Ayrıca tanıtılması gereken harici DLL'ler de var, örneğin pangolinler.
Çıkış tablosu olmayan DLL'ler için, dışa aktarma SDK'sı kullanılarak, DLL'yi yüklemek, SDK'daki fonksiyonu adreslemek ve SDK fonksiyonunun dönüş değerini almak için parametreleri kolayca geçirmek için E dilinde alt program () komutunu çağırmamız gerekir.
Çıkış tablosu olan DLL'ler için, E'nin DLL komutuyla çağırmak sorun değil.
DLL'leri çağırmayı zaten bilenler için, fonksiyonel SDK'ların işleyişi kolay kontrol edilebilir, sadece shell'in özel API kılavuzuna bir göz atın.
2. Şifreli SDK
Şifreleme kabuğu yazılımda belirli bir SDK etiketini bulduktan sonra, belirli kod segmentinin güvenliğini artırmak için bu kod parçasını hedeflenmiş bir yöntemle işler. Bu tür bir işaretleme doğal olarak çift tanımlı bir montaj kodudur!
Kolay durumda, insert code () komutuyla assembly kodunu kolayca çağırabiliriz. Bu parçayı kullanan şifreleme kabuğuna özel olarak aşağıdaki yöntemi takip ediyoruz.
Şifreleme kabuğuyla birlikte gelen SDK'yı açın ve okuyabileceğiniz bir dil SDK başlık dosyası bulun. Örneğin, aşağıdaki LCC'nin başlık dosyası.
Program kodu aşağıda:
1 #elif tanımlanmış(__LCC__)
2 /* Rubem Pechansky tarafından sağlandı, 26 Şubat 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");
Son iki cümlede açıklamak gerekirse, NANOBEGIN ve NANOEND, C dilinde CC kod parçası işaretlemeleridir ve bu iki işaretleme ile sarılan kod parçaları şifreleme kabuğu tarafından CC korunacaktır. NANOBEGIN, assembly kodu ile 0xEB, 0x03, 0xD6, 0xD7, 0x01 şeklinde temsil edilir; cümlesi C'nin onaltılık temsilidir ve assembly ifadesi E'de ondalık ondalık olarak temsil edilir. Yani, bu kodu çevirmemiz gerekiyor.
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
O zaman NANOBEGIN, E'de bir ekleme kodu olarak ifade edilir ({235, 3, 214, 215, 1}).
|