Code Virtualizer java代碼混淆助手是一款非常實用的程序代碼混淆軟件。有什麼好用的源代碼混淆工具?Code Virtualizer(java代碼混淆助手)的優秀有目共睹。專門為幫助開發人員保護代碼區域免受逆向工程而開發的小型軟件,軟件能夠對代碼數據進行加密並將其轉換成其他用戶無法讀取和解釋的格式,歡迎下載。
1、通過多個虛擬機進行混淆。
2、每個受保護的應用程序的獨特保護。
3、保護任何x32和x64應用程序和設備驅動程序。
4、高級突變引擎。
5、代碼重定位以保護DLL和設備驅動程序。
6、在獨特的虛擬機內仿真任何Intel x86操作碼。
7、每個受保護的應用程序的唯一虛擬操作碼。
8、完全兼容任何壓縮機/保護器。
9、命令行保護。
先把Code Virtualizer的虛擬機簡單說一下,這裏把我們自己的程序運行空間叫做宿主吧。cv虛擬機的所有運算的操作都在宿主的堆棧中完成。
cv自己的存放宿主程序的寄存器及解析例程的結構叫vm_context,所有操作的都是由一個叫vm_data數據塊來驅動的。這裏麵的數據會指示cv的虛擬機如何取指令計算出新的數據。
程序運行進入cv虛擬機後,edi的值始終不變,一直指向vm_context(在Ryosuke的裏麵叫VM_BLOCK都是一個意思)的首地址。
從偏移0 ~ 0x1c 存放的是宿主的寄存器,但每次都會變,這個是按某種順序的變化的。
esi指向vm_data結構,每執行一個dispatch,esi不斷的增加。
eax的用處就是從esi中讀取數據,進行運算,獲得解析例程的dispatch號碼。或者是vm_context的某個相對偏移地址(cv裏麵為了操作某個結構)
ebx就是參與計算用的,和vm_data中的數據運算,用來獲得有效的eax
edx是個臨時的變量,cv在宿主堆棧的運算中,常用edx做臨時變量來存放數據
ebp,esp 基本沒有太大用處,參與一些混淆代碼的計算。
struct vm_context
{
DWORD vm_off_00; +0
DWORD vm_off_04; +4
DWORD vm_off_08; +8
DWORD vm_off_0c; +0c
DWORD vm_off_10; +10
DWORD vm_off_14; +14
DWORD vm_off_18; +18
DWORD vm_off_1c; +1c
DWORD vm_off_20;
DWORD VM_off_24;
DWORD VM_ecx_value;
DWORD VM_off_2c;
DWORD VM_busy_flag;
DWORD VM_off_34;
DWORD VM_off_38;
DWORD VM_off_3c;
DWORD VM_off_40;
DWORD VM_off_44;
DWORD VM_off_48;
DWORD vm_context_xxx1;
DWORD VM_dispatch_xxx2;
DWORD VM_dispatch_xxx3;
...
}
下麵就測試這麼一個例子:
.data
t_buff db 100 dup(090h)
t_txt db "test",0
t_title db "codevirtualizer",0
.code
START:
mov eax,offset t_buff
call VirtualizerStart
mov dword ptr[eax],01234567h ; 既然小窺,先隻測試這一條語句吧,對cv的分析可以在裏加入不同的語句一點一點分析
call VirtualizerEnd
invoke MessageBox,0,offset t_txt,offset t_title,0
invoke ExitProcess,0
end START
分別在Protection Options中選擇這兩種個加一次
Virtual Opcodes Obfuscation :Low ,Highest
Virtual Machine Complexity :Low ,Highest
Opcodes Mutation :Low ,Highest
分析後可以發現再混淆方麵差別並不是太大。
進入VM之前先保存程序最初的環境
EAX 00403000
ECX 0013FFB0
EDX 7C92E514
EBX 7FFDE000
ESP 0013FFC0
EBP 0013FFF0
ESI 00000068
EDI 0013B790
EIP 004034EC CV_TES~3.004034EC
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
軟後先壓入VM_DATA
00407083 68 1A704000 push CV_TES~3.0040701A -----VM_DATA
00407088 ^ E9 5FC4FFFF jmp CV_TES~3.004034EC
VM_DATA 內容每次加殼後都變化
0040701A 3F 1E E1 D0 F8 5F A0 8F B7 A4 5B 4A 72 E4 1B 0A ?嶁鴂爮筏[Jr?.
0040702A 32 2A D5 C4 5F D9 C0 9C 63 52 7A DE 21 10 38 21 2*漳_倮渃Rz?8!
0040703A DE CD F5 65 9A 89 11 74 22 9F 40 20 7A DD 43 EF 尥鮡殙t"烜 z軨
0040704A 45 05 C3 7B DD 74 54 43 A9 25 6B BD 85 1A EF 01 E脅輙TC?k絽?
0040705A 00 00 00 FB 59 04 FB 59 C7 93 6C CA 38 21 DE 3C ...鸜鸜菗l?!?
0040706A AA AE 51 AF 1D 3F C0 1E 8C D0 2F 8D FB 5B A4 02 Q???屝/嶜[?
0040707A 70 EB 14 72 E0 77 88 E6 B8 68 1A 70 40 00 E9 5F p?r鄔堟竓p@.開
0040708A C4 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 ?.............
通過重定位獲得自身數據及處理例程的偏移,設置重定位標誌,如果是dll還要重新定位。
004034EF E8 00000000 call CV_TES~3.004034F4 ; 重定位自身
004034F4 5F pop edi
004034F5 81EF F4344000 sub edi,CV_TES~3.004034F4
004034FB 8BC7 mov eax,edi
004034FD 81C7 00324000 add edi,offset
00403503 3B47 2C cmp eax,dword ptr ds:[edi+2C]
00403556 AC lods byte ptr ds:[esi] ;此處進入虛擬機,知道遇到vm_exit,才退出。
00403557 04 81 add al,81
00403559 04 90 add al,90
0040355B 00D8 add al,bl
0040355D 2C 90 sub al,90
0040355F E9 080A0000 jmp CV_TES~3.00403F6C
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載