【加密】各種加密(打亂)易語言程式碼的sdk程式碼
阿新 • • 發佈:2019-01-02
[部分內容來自網際網路]
(這裡是你寫的程式碼)
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 })' VMP保護結束標誌
然後再加SE殼
-----------
SDK程式碼(簡化)------------------------------------------------------------------------
各種保護殼易語言的sdk程式碼 ZProtect
//Code_Confusion 是程式碼亂序加密標記,允許您選擇一部分被亂序的程式碼
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion標記開始
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion標記結尾
//Code_Elimination 是程式碼清除標記,允許您選擇一部分程式碼在執行後從記憶體中刪除;使用此標記的目的是為了防止破解者從記憶體中轉儲出完整的程式程式碼。
置入程式碼 ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination標記開始
置入程式碼 ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination標記結尾
//Decode_onExec 是動態解碼標記,允許您選擇一部分只在執行時才解密的程式碼段;這部分程式碼僅在需要執行時才解碼,執行前和執行後均處於加密狀態
置入程式碼 ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec標記開始
置入程式碼 ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec標記結尾
//Decode_onReg 是註冊解碼標記,允許您選擇一部分使用有效金鑰才解密的程式碼;如果註冊金鑰不正確,那麼這部分程式碼將永遠處於加密狀態。通俗地講,這部分程式碼僅在註冊版中執行
//原始碼中可以使用任意數量的 Decode_onReg 標記,但是這些程式碼段在執行時會同時解密。註冊解碼標記主要用於啟用未註冊版中被限制的功能,使之註冊成為完整版。
置入程式碼 ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg標記開始
置入程式碼 ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg標記結尾
//Zprotect_VM 是虛擬機器加密標記,允許您選擇一部分程式碼放到虛擬機器中執行;虛擬機器的指令系統是完全不同於現有的 x86 指令,可以有效阻止程式碼還原及分析
置入程式碼 ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM標記開始
置入程式碼 ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM標記結尾
-----------適用於ZProtect V1.4.9.0版本---------
VMProtect.易的SDK
置入程式碼 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP保護開始標誌
'關鍵程式碼
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP保護結束標誌
Enigma加密易語言的SDK
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 66 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 69 })' 標記結束處
NoobyProtect加密易語言的SDK
置入程式碼 ({ 235, 6, 78, 80, 66, 69, 71, 78 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 6, 78, 80, 69, 78, 68, 80 })' 標記結束處
穿山甲呼叫功能型加密易語言SDK的DEMO
置入程式碼 ({ 235, 3, 214, 215, 1 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 3, 214, 215, 0 })' 標記結束處
ASP加密易語言SDK
置入程式碼 ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' 標記結束處
Shielden 2.0.1.0
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
-------------------完全版--------------------------
ZProtect
//Code_Confusion 是程式碼亂序加密標記,允許您選擇一部分被亂序的程式碼
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion標記開始
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion標記結尾
//Code_Elimination 是程式碼清除標記,允許您選擇一部分程式碼在執行後從記憶體中刪除;使用此標記的目的是為了防止破解者從記憶體中轉儲出完整的程式程式碼。
置入程式碼 ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination標記開始
置入程式碼 ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination標記結尾
//Decode_onExec 是動態解碼標記,允許您選擇一部分只在執行時才解密的程式碼段;這部分程式碼僅在需要執行時才解碼,執行前和執行後均處於加密狀態
置入程式碼 ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec標記開始
置入程式碼 ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec標記結尾
//Decode_onReg 是註冊解碼標記,允許您選擇一部分使用有效金鑰才解密的程式碼;如果註冊金鑰不正確,那麼這部分程式碼將永遠處於加密狀態。通俗地講,這部分程式碼僅在註冊版中執行
//原始碼中可以使用任意數量的 Decode_onReg 標記,但是這些程式碼段在執行時會同時解密。註冊解碼標記主要用於啟用未註冊版中被限制的功能,使之註冊成為完整版。
置入程式碼 ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg標記開始
置入程式碼 ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg標記結尾
//Zprotect_VM 是虛擬機器加密標記,允許您選擇一部分程式碼放到虛擬機器中執行;虛擬機器的指令系統是完全不同於現有的 x86 指令,可以有效阻止程式碼還原及分析
置入程式碼 ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM標記開始
置入程式碼 ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM標記結尾
-----------適用於ZProtect V1.4.9.0版本---------
VMProtect.易的SDK
置入程式碼 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP保護開始標誌
'關鍵程式碼
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP保護結束標誌
Enigma加密易語言的SDK
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 66 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 69 })' 標記結束處
NoobyProtect加密易語言的SDK
置入程式碼 ({ 235, 6, 78, 80, 66, 69, 71, 78 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 6, 78, 80, 69, 78, 68, 80 })' 標記結束處
穿山甲呼叫功能型加密易語言SDK的DEMO
置入程式碼 ({ 235, 3, 214, 215, 1 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 3, 214, 215, 0 })' 標記結束處
ASP加密易語言SDK
置入程式碼 ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' 標記結束處
Shielden 2.0.1.0
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
易語言SDK轉換方法↓
隨著E5.0靜態編譯對標準PE格式的支援,在E程式中引入加密殼SDK提升軟體保護質量已經成為現實。
加密殼SDK大體可劃分為兩類,一類是功能型SDK,一類是保護型SDK。
一、功能性SDK。
功能性SDK用來處理序列號驗證、授權時間驗證等功能性操作。這類SDK有直接應用的各種函式在殼裡提供,如WL;也有需要引入外部DLL的,如穿山甲。
對於無輸出表的DLL,使用引入外部SDK,我們需要載入DLL,定址SDK中的函式,通過E裡邊的呼叫子程式()命令可以很方便的對SDK函式完成傳遞引數獲取返回值的操作,完事後把DLL一解除安裝就搞定了。
對於有輸出表的DLL,使用E的DLL命令進行呼叫就OK了。
已經會呼叫DLL的朋友,對功能性SDK的操作可以說是輕鬆駕馭的啦,看一下殼具體的API手冊就OK。
二、加密型SDK
通常加密型SDK於殼化掛鉤,加密殼在軟體中發覺特定的SDK標記後,將採用針對性方法對這一段程式碼進行鍼對性處理提高特定程式碼段的安全性。這種標記自然就是成對定義的彙編程式碼!
在易裡邊我們可以使用置入程式碼()命令輕鬆調用匯編程式碼。具體到加密殼使用這塊,我們按照如下方法做。
開啟加密殼自帶的SDK,找一門自己可以讀懂的語言SDK標頭檔案看一下。例如下面這一段LCC的標頭檔案。
以下內容為程式程式碼:
1 #elif defined(__LCC__)
2 /* Provided by 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");
用最後兩句做解釋,NANOBEGIN和NANOEND是C語言的CC程式碼段標記,被這兩個標記包住的程式碼段,加密殼才會對其進行CC保護處理。NANOBEGIN 用匯編程式碼表示為 0xEB,0x03,0xD6,0xD7,0x01 ,他這句是C的16進製表示形式,在E裡彙編語句是採用10進製表示的。也就是我們要翻譯下這句程式碼。
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
那麼NANOBEGIN在E語言裡表現形式就是 置入程式碼({235, 3, 214, 215, 1}) 。
VMP保護-------------------------------------------------------------------------------
置入程式碼 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) 'VMP保護開始標誌(這裡是你寫的程式碼)
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 })' VMP保護結束標誌
然後再加SE殼
-----------
SDK程式碼(簡化)------------------------------------------------------------------------
各種保護殼易語言的sdk程式碼 ZProtect
//Code_Confusion 是程式碼亂序加密標記,允許您選擇一部分被亂序的程式碼
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion標記開始
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion標記結尾
//Code_Elimination 是程式碼清除標記,允許您選擇一部分程式碼在執行後從記憶體中刪除;使用此標記的目的是為了防止破解者從記憶體中轉儲出完整的程式程式碼。
置入程式碼 ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination標記開始
置入程式碼 ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination標記結尾
//Decode_onExec 是動態解碼標記,允許您選擇一部分只在執行時才解密的程式碼段;這部分程式碼僅在需要執行時才解碼,執行前和執行後均處於加密狀態
置入程式碼 ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec標記開始
置入程式碼 ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec標記結尾
//Decode_onReg 是註冊解碼標記,允許您選擇一部分使用有效金鑰才解密的程式碼;如果註冊金鑰不正確,那麼這部分程式碼將永遠處於加密狀態。通俗地講,這部分程式碼僅在註冊版中執行
//原始碼中可以使用任意數量的 Decode_onReg 標記,但是這些程式碼段在執行時會同時解密。註冊解碼標記主要用於啟用未註冊版中被限制的功能,使之註冊成為完整版。
置入程式碼 ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg標記開始
置入程式碼 ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg標記結尾
//Zprotect_VM 是虛擬機器加密標記,允許您選擇一部分程式碼放到虛擬機器中執行;虛擬機器的指令系統是完全不同於現有的 x86 指令,可以有效阻止程式碼還原及分析
置入程式碼 ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM標記開始
置入程式碼 ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM標記結尾
-----------適用於ZProtect V1.4.9.0版本---------
VMProtect.易的SDK
置入程式碼 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP保護開始標誌
'關鍵程式碼
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP保護結束標誌
Enigma加密易語言的SDK
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 66 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 69 })' 標記結束處
NoobyProtect加密易語言的SDK
置入程式碼 ({ 235, 6, 78, 80, 66, 69, 71, 78 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 6, 78, 80, 69, 78, 68, 80 })' 標記結束處
穿山甲呼叫功能型加密易語言SDK的DEMO
置入程式碼 ({ 235, 3, 214, 215, 1 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 3, 214, 215, 0 })' 標記結束處
ASP加密易語言SDK
置入程式碼 ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' 標記結束處
Shielden 2.0.1.0
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
-------------------完全版--------------------------
ZProtect
//Code_Confusion 是程式碼亂序加密標記,允許您選擇一部分被亂序的程式碼
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 65, 82, 84 }) ' Code_Confusion標記開始
置入程式碼 ({ 235, 8, 83, 84, 95, 83, 84, 69, 78, 68 }) ' Code_Confusion標記結尾
//Code_Elimination 是程式碼清除標記,允許您選擇一部分程式碼在執行後從記憶體中刪除;使用此標記的目的是為了防止破解者從記憶體中轉儲出完整的程式程式碼。
置入程式碼 ({ 235, 8, 79, 67, 95, 83, 84, 65, 82, 84 }) ' Code_Elimination標記開始
置入程式碼 ({ 235, 8, 79, 67, 95, 79, 67, 69, 78, 68 }) ' Code_Elimination標記結尾
//Decode_onExec 是動態解碼標記,允許您選擇一部分只在執行時才解密的程式碼段;這部分程式碼僅在需要執行時才解碼,執行前和執行後均處於加密狀態
置入程式碼 ({ 235, 8, 68, 89, 95, 83, 84, 65, 82, 84 }) // Decode_onExec標記開始
置入程式碼 ({ 235, 8, 68, 89, 95, 68, 89, 69, 78, 68 }) // Decode_onExec標記結尾
//Decode_onReg 是註冊解碼標記,允許您選擇一部分使用有效金鑰才解密的程式碼;如果註冊金鑰不正確,那麼這部分程式碼將永遠處於加密狀態。通俗地講,這部分程式碼僅在註冊版中執行
//原始碼中可以使用任意數量的 Decode_onReg 標記,但是這些程式碼段在執行時會同時解密。註冊解碼標記主要用於啟用未註冊版中被限制的功能,使之註冊成為完整版。
置入程式碼 ({ 235, 8, 82, 68, 95, 83, 84, 65, 82, 84 }) // Decode_onReg標記開始
置入程式碼 ({ 235, 8, 82, 68, 95, 82, 68, 69, 78, 68 }) // Decode_onReg標記結尾
//Zprotect_VM 是虛擬機器加密標記,允許您選擇一部分程式碼放到虛擬機器中執行;虛擬機器的指令系統是完全不同於現有的 x86 指令,可以有效阻止程式碼還原及分析
置入程式碼 ({ 235, 8, 86, 77, 95, 83, 84, 65, 82, 84 }) // Zprotect_VM標記開始
置入程式碼 ({ 235, 8, 86, 77, 95, 86, 77, 69, 78, 68 }) // Zprotect_VM標記結尾
-----------適用於ZProtect V1.4.9.0版本---------
VMProtect.易的SDK
置入程式碼 ({ 235, 16, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 98, 101, 103, 105, 110, 0 }) ' VMP保護開始標誌
'關鍵程式碼
置入程式碼 ({ 235, 14, 86, 77, 80, 114, 111, 116, 101, 99, 116, 32, 101, 110, 100, 0 }) ' VMP保護結束標誌
Enigma加密易語言的SDK
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 66 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 10, 69, 67, 82, 79, 78, 69, 88, 69, 67, 69 })' 標記結束處
NoobyProtect加密易語言的SDK
置入程式碼 ({ 235, 6, 78, 80, 66, 69, 71, 78 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 6, 78, 80, 69, 78, 68, 80 })' 標記結束處
穿山甲呼叫功能型加密易語言SDK的DEMO
置入程式碼 ({ 235, 3, 214, 215, 1 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 3, 214, 215, 0 })' 標記結束處
ASP加密易語言SDK
置入程式碼 ({ 235, 4, 235, 5, 25, 1, 233, 37, 0 })' 標記開始處
'關鍵程式碼
置入程式碼 ({ 235, 4, 235, 5, 41, 1, 233, 133, 0, })' 標記結束處
Shielden 2.0.1.0
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 0 }) ' SE_PROTECT_START
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 77 }) ' SE_PROTECT_START_MUTATION
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 85 }) ' SE_PROTECT_START_ULTRA
關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
置入程式碼 ({ 235, 7, 83, 69, 66, 69, 71, 78, 86 }) '
' 關鍵程式碼
置入程式碼 ({ 235, 7, 83, 69, 69, 78, 68, 80, 0 }) ' SE_PROTECT_END
易語言SDK轉換方法↓
隨著E5.0靜態編譯對標準PE格式的支援,在E程式中引入加密殼SDK提升軟體保護質量已經成為現實。
加密殼SDK大體可劃分為兩類,一類是功能型SDK,一類是保護型SDK。
一、功能性SDK。
功能性SDK用來處理序列號驗證、授權時間驗證等功能性操作。這類SDK有直接應用的各種函式在殼裡提供,如WL;也有需要引入外部DLL的,如穿山甲。
對於無輸出表的DLL,使用引入外部SDK,我們需要載入DLL,定址SDK中的函式,通過E裡邊的呼叫子程式()命令可以很方便的對SDK函式完成傳遞引數獲取返回值的操作,完事後把DLL一解除安裝就搞定了。
對於有輸出表的DLL,使用E的DLL命令進行呼叫就OK了。
已經會呼叫DLL的朋友,對功能性SDK的操作可以說是輕鬆駕馭的啦,看一下殼具體的API手冊就OK。
二、加密型SDK
通常加密型SDK於殼化掛鉤,加密殼在軟體中發覺特定的SDK標記後,將採用針對性方法對這一段程式碼進行鍼對性處理提高特定程式碼段的安全性。這種標記自然就是成對定義的彙編程式碼!
在易裡邊我們可以使用置入程式碼()命令輕鬆調用匯編程式碼。具體到加密殼使用這塊,我們按照如下方法做。
開啟加密殼自帶的SDK,找一門自己可以讀懂的語言SDK標頭檔案看一下。例如下面這一段LCC的標頭檔案。
以下內容為程式程式碼:
1 #elif defined(__LCC__)
2 /* Provided by 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");
用最後兩句做解釋,NANOBEGIN和NANOEND是C語言的CC程式碼段標記,被這兩個標記包住的程式碼段,加密殼才會對其進行CC保護處理。NANOBEGIN 用匯編程式碼表示為 0xEB,0x03,0xD6,0xD7,0x01 ,他這句是C的16進製表示形式,在E裡彙編語句是採用10進製表示的。也就是我們要翻譯下這句程式碼。
0xEB = 235
0x03 = 3
0xD6 = 214
0xD7 = 215
0x01 = 1
那麼NANOBEGIN在E語言裡表現形式就是 置入程式碼({235, 3, 214, 215, 1}) 。