-
-
[原创]乾坤大挪移VprotectDemo.2.0.9脱壳之处理antidump
-
发表于:
2011-10-14 13:01
13200
-
[原创]乾坤大挪移VprotectDemo.2.0.9脱壳之处理antidump
最近比较忙不会像上次放国庆那样有时间弄了,VprotectDemo.2.0.9的内存随机校检变得非常非常的强悍,不能像上次 Vprotect Demo 2.0.4 patch虚拟机那样简单了。
关于脱壳请参考:672K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4g2F1M7r3q4U0K9#2)9J5k6h3y4F1i4K6u0r3N6r3S2J5k6h3q4V1i4K6u0V1y4K6l9J5y4U0y4Q4x3X3b7I4i4K6u0V1x3g2)9J5k6h3S2@1L8h3H3`.的脚本。
如果程序SDK了代码并加了壳,脚本脱完壳修复好IAT之后,程序在本机和本机的虚拟机跑是没有任何问题的,一但换了机器程序就跑不起来了这可能就是VprotectDemo.2.0.9 anti dump,下面主要介绍如何绕过crc32内存校验并patch CPUID来处理anti dump的。
一.乾坤大挪移之patch CRCHandler绕过crc32的内存校验.
1.LordPE载入修复好IAT后的程序,依次选择区段 -> 一般选择RawSize最大的区段可能就是虚拟机区段了,如果不确认区段请在程序中找,保存区段到磁盘。
然后选择从磁盘中载入我们刚才保存的区段,这样子就在程序的区段后面添加了一个镜像区段。计算好一个偏移地址:AD5000 = 010C8000(新添加的镜像区段虚拟地址) -005F3000(虚拟机起始虚拟地址),注意是VA不是RAV。
2.OD载入修复好IAT后的程序,在反汇编窗口中打开有虚拟机代码的区段,查找所有命令:MOV ESI,DWORD PTR DS:[EDI+30] ,确定之后弹出8个crc32 handler,这8个handler代码的功能一模一样,再往上拉不要超过retn指令找到MOV EAX,DWORD PTR SS:[EBP] 就是CRC32Handler开始的地方了,分别找到所有的crc32 handler起始的位置。然后将剩下的7个起始位置修改为JMP到其中一个crc32 handler起始位置,这样做是好集中patch。
3.在其中的crc32 handler开始位置修改代码如下:
二进制代码:
8B 45 00 05 DE C0 00 00 C1 C0 0E F7 D0 8B C8 8B 45 04 05 DE C0 00 00 C1 C0 0E F7 D0 05 00 70 CB
00 8B D0 8D 6D 08 B8 FF FF FF FF 53 56 8B 77 30 8A 1A 32 D8 81 E3 FF 00 00 00 8B 1C 9E C1 E8 08
33 C3 42 49 85 C9 75 E8 5E 5B F7 D0 F7 D5 8D 6D 04 F7 D5 F7 D0 C1 C8 0E 2D DE C0 00 00 89 45 00
C3
00931C87 8B45 00 MOV EAX,DWORD PTR SS:[EBP]
00931C8A 05 DEC00000 ADD EAX,0C0DE
00931C8F C1C0 0E ROL EAX,0E
00931C92 F7D0 NOT EAX
00931C94 8BC8 MOV ECX,EAX
00931C96 8B45 04 MOV EAX,DWORD PTR SS:[EBP+4]
00931C99 05 DEC00000 ADD EAX,0C0DE
00931C9E C1C0 0E ROL EAX,0E
00931CA1 F7D0 NOT EAX
00931CA3 05 0070CB00 ADD EAX,00CB7000 //此处修改为上面计算的偏移AD5000。
00931CA8 8BD0 MOV EDX,EAX
00931CAA 8D6D 08 LEA EBP,DWORD PTR SS:[EBP+8]
00931CAD B8 FFFFFFFF MOV EAX,-1
00931CB2 53 PUSH EBX
00931CB3 56 PUSH ESI
00931CB4 8B77 30 MOV ESI,DWORD PTR DS:[EDI+30]
00931CB7 8A1A MOV BL,BYTE PTR DS:[EDX]
00931CB9 32D8 XOR BL,AL
00931CBB 81E3 FF000000 AND EBX,0FF
00931CC1 8B1C9E MOV EBX,DWORD PTR DS:[ESI+EBX*4]
00931CC4 C1E8 08 SHR EAX,8
00931CC7 33C3 XOR EAX,EBX
00931CC9 42 INC EDX
00931CCA 49 DEC ECX
00931CCB 85C9 TEST ECX,ECX
00931CCD ^ 75 E8 JNZ SHORT 00931CB7
00931CCF 5E POP ESI
00931CD0 5B POP EBX
00931CD1 F7D0 NOT EAX
00931CD3 F7D5 NOT EBP
00931CD5 8D6D 04 LEA EBP,DWORD PTR SS:[EBP+4]
00931CD8 F7D5 NOT EBP
00931CDA F7D0 NOT EAX
00931CDC C1C8 0E ROR EAX,0E
00931CDF 2D DEC00000 SUB EAX,0C0DE
00931CE4 8945 00 MOV DWORD PTR SS:[EBP],EAX
00931CE7 C3 RETN
[培训]科锐逆向工程师培训第53期2025年7月8日开班!