|
来源:安全中国
ACProtect 1.21专业版主程序的脱壳
操作系统:WIN2K 工具:OLLYDBG1.1,ImportREC,LordPE 下载地址: http://www.ultraprotect.com/acpr_pro.exe 目标程序:ACProtect 1.21专业版主程序。
脱壳过程: 1.寻找Stolen code的变形及其伪OEP。 用OLLYDBG1.1加载后,停留在程序的入口: 006D4000 pushad 006D4001 dec ecx 006D4002 sbb esi,B59B7C21 006D4008 clc 006D4009 mov ecx,ebx 006D400B dec ecx 用IsDebug 1.4插件去掉Ollydbg的调试器标志。忽略除了“int3异常”之外的所有其他异常选项。 查看堆栈esp=12ffc4,根据此值来设置硬件访问断点:去转存窗口,Ctrl+G:0012FFC0(入口esp-4),在0012FFC0处的4个字节上,下硬件访问->DWord 断点。 F9开始运行,断下后再取消该硬件断点。 006E56FF popad 006E5700 mov dword ptr ds:[6D4E73],ebx 006E5706 push dword ptr ds:[6D4E73] 006E570C push eax 006E570D mov eax,ACProtec.006D4ECF 006E5712 mov ebx,eax 006E5714 pop eax ; KERNEL32.77E887E7 006E5715 mov dword ptr ds:[ebx],ecx 006E5717 pop ebx ; KERNEL32.77E887E7 006E5718 push dword ptr ds:[6D4ECF] 006E571E mov dword ptr ss:[esp],esi 006E5721 mov dword ptr ss:[esp],ebx 006E5724 mov dword ptr ss:[esp],eax 006E5727 push edx 006E5728 pop dword ptr ds:[6D4ECB] ; KERNEL32.77E887E7 006E572E push dword ptr ds:[6D4ECB] 006E5734 mov dword ptr ss:[esp],ecx 006E5737 mov dword ptr ss:[esp],ACProtec.006D4F0F 006E573E pop dword ptr ds:[6D4EEF] ; KERNEL32.77E887E7 006E5744 mov dword ptr ds:[6D4E9F],ebx 006E574A push dword ptr ds:[6D4E9F] 006E5750 pushad 006E5751 call ACProtec.006E1460 006E5756 call ACProtec.006E575B 006E575B pop ebx ; KERNEL32.77E887E7 006E575C sub ebx,dword ptr ss:[ebp+4023EC] 006E5762 sub ebx,1175B 006E5768 mov dword ptr ss:[ebp+40D2AA],ebx 006E576E popad 006E576F mov dword ptr ss:[esp],edi ; ACProtec.005D16A8 006E5772 mov dword ptr ds:[6D4E9B],ACProtec.006D4EEF 006E577C push dword ptr ds:[6D4E9B] 006E5782 pop dword ptr ds:[6D4E97] ; KERNEL32.77E887E7 006E5788 mov edi,dword ptr ds:[6D4E97] 006E578E mov eax,dword ptr ds:[edi] 006E5790 mov edi,dword ptr ss:[esp] ; KERNEL32.77E887E7 006E5793 pop dword ptr ds:[6D4EC7] ; KERNEL32.77E887E7 006E5799 mov dword ptr ds:[eax],ebp //stolen code第1行,push ebp的变形 006E579B mov eax,dword ptr ss:[esp] ; KERNEL32.77E887E7 006E579E pop dword ptr ds:[6D4EFB] ; KERNEL32.77E887E7 006E57A4 push dword ptr ds:[6D4F0F] 006E57AA mov dword ptr ds:[6D4F0B],esp 006E57B0 push dword ptr ds:[6D4F0B] 006E57B6 pop dword ptr ds:[6D4EF7] ; KERNEL32.77E887E7 006E57BC push eax 006E57BD nop 006E57BE nop 006E57BF pushad 006E57C0 call ACProtec.006E1460 006E57C5 call ACProtec.006E11FE 006E57CA mov dword ptr ss:[ebp+40E205],eax 006E57D0 popad 006E57D1 mov dword ptr ss:[esp],edx 006E57D4 mov dword ptr ds:[6D4E93],ACProtec.006D4EDB 006E57DE mov edx,dword ptr ds:[6D4E93] 006E57E4 mov dword ptr ds:[edx],ecx 006E57E6 mov edx,dword ptr ss:[esp] ; KERNEL32.77E887E7 006E57E9 pop dword ptr ds:[6D4E8F] ; KERNEL32.77E887E7 006E57EF push dword ptr ds:[6D4EDB] 006E57F5 push ACProtec.006D4EF7 006E57FA pop dword ptr ds:[6D4EC3] ; KERNEL32.77E887E7 006E5800 push dword ptr ds:[6D4EC3] 006E5806 pop dword ptr ds:[6D4EBF] ; KERNEL32.77E887E7 006E580C push dword ptr ds:[6D4EBF] 006E5812 pop ecx ; KERNEL32.77E887E7 006E5813 mov ebp,dword ptr ds:[ecx] //stolen code第2行,mov ebp,esp的变形 006E5815 mov ecx,dword ptr ss:[esp] ; KERNEL32.77E887E7 006E5818 pop dword ptr ds:[6D4ED7] ; KERNEL32.77E887E7 006E581E push edx 006E581F nop 006E5820 nop 006E5821 pushad 006E5822 call ACProtec.006E1460 006E5827 mov byte ptr ss:[ebp+40D1D0],0 006E582E popad 006E582F mov edx,ACProtec.006D4EBB 006E5834 mov dword ptr ds:[edx],ebx 006E5836 pop edx ; KERNEL32.77E887E7 006E5837 push dword ptr ds:[6D4EBB] 006E583D pop dword ptr ds:[6D4EEB] ; KERNEL32.77E887E7 006E5843 push dword ptr ds:[6D4EEB] 006E5849 mov dword ptr ss:[esp],eax 006E584C mov dword ptr ss:[esp],esi //stolen code第3行,push esi的变形
|