本帖最后由 Sound 于 2016-3-13 14:37 编辑
本帖不阐述这个版本的脱壳 资料多。
Patch CRC 也不阐述, 资料多。
其他也什么都不讲 资料多。样本
UnpackMe.vmp.7z
(1.32 MB, 下载次数: 1406)
就一个子程序的代码。也分析了2个多小时。
作者说是 VMP2.13.8的, 开始借助插件,发现竟然只能识别外壳的VM CODE
于是就直接定位验证子程序,其次人肉分析
有Anti vmware .
anti anti vmware 直接VM retn处
[Asm] 纯文本查看 复制代码 006B0F1A ED IN EAX,DX
006B0F1B 9C PUSHFD
006B0F1C 9C PUSHFD
006B0F1D 60 PUSHAD
006B0F1E 9C PUSHFD
步过 in eax,dx 后 DX 与 BX 清零.
跑起来后 解码 代码区段 解码 可以看到。
[Asm] 纯文本查看 复制代码 00401000 33C0 XOR EAX,EAX
00401002 C3 RETN
00401003 90 NOP
00401004 - E9 31121B00 JMP 005B223A vm事件入口。
00401009 CC INT3
0040100A CC INT3
既然V了 就搜VM事件入口的特征码
调试后发现派发事件
[Asm] 纯文本查看 复制代码 0041012D 8B4424 34 MOV EAX,DWORD PTR SS:[ESP+0x34]
00410131 8BCE MOV ECX,ESI
00410133 50 PUSH EAX
00410134 E8 C7A60000 CALL 0041A800 这里
[Asm] 纯文本查看 复制代码 0041A7FD CC INT3
0041A7FE CC INT3
0041A7FF CC INT3
0041A800 - E9 17D71100 JMP 00537F1C 被V的派发事件。
0041A805 CC INT3
0041A806 CC INT3
0041A807 CC INT3
0041A808 CC INT3
断点 输入假码 Sound
断下 0041A800
运行后 出现验证失败,提示,直接回调栈帧
[Asm] 纯文本查看 复制代码 0053FBF2 66:19C0 SBB AX,AX
0053FBF5 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+0xC]
0053FBF9 ^ E9 1048FEFF JMP 0052440E
注意堆栈 5个参数
[Asm] 纯文本查看 复制代码
0012F664 0012F670
0012F668 00000004
0012F66C 0012F684
0012F670 00000002
0012F674 00000000
0012F678 00000000
0012F67C 0053CD30 RETURN to UnpackMe.0053CD30 from UnpackMe.00401AF1
0012F680 00000004
0012F684 001B1500 ASCII "验证失败!"
0012F688 00000000
0012F68C 80000004 ..
0012F690 00000000 ..
0012F694 00000000 ..
0012F698 80000301 ..
0012F69C 00000000
简单来瞅一瞅 被VM后 还是能看出来这里在干嘛 为后面打个薄弱的基础。 压入的参数 /。文本信息。 验证失败。
调试后 来到
[Asm] 纯文本查看 复制代码 005377A2 66:29F3 SUB BX,SI ****
005377A5 F8 CLC
005377A6 F9 STC
005377A7 66:0FCB BSWAP BX
005377AA 83C4 10 ADD ESP,0x10 ****
005377AD 66:31EB XOR BX,BP
005377B0 C0CF 04 ROR BH,0x4
005377B3 10CB ADC BL,CL
005377B5 66:0FBAFB 08 BTC BX,0x8
005377BA 8945 E4 MOV DWORD PTR SS:[EBP-0x1C],EAX ****
005377BD 66:F7D3 NOT BX
005377C0 66:0FBEDB MOVSX BX,BL
005377C4 0F93C7 SETNB BH
005377C7 D2FF SAR BH,CL
005377C9 8B5D E8 MOV EBX,DWORD PTR SS:[EBP-0x18] ****
005377CC 0FBAE3 12 BT EBX,0x12
005377D0 F9 STC
005377D1 85DB TEST EBX,EBX ****
未标记的都可以理解为花指令 ,简单识别 花指令和 可用代码 方便后面分析 不走入误区。。。。。。。。。。。。。。
后面直接遇VMCALL F7 平时F8 现在注意当前EAX的值 为输入的位数。后面不再阐述当前VM流程中干嘛。标记下代码
经过 text ebx,ebx 进入 [Asm] 纯文本查看 复制代码 call 0054744C
[Asm] 纯文本查看 复制代码 0054744C 51 PUSH ECX *******
0054744D 8D6424 08 LEA ESP,DWORD PTR SS:[ESP+0x8] *******
00547451 0F84 63B30200 JE 005727BA
00547457 0F82 84120200 JB 005686E1
0054745D ^ E9 7919FDFF JMP 00518DDB
00547462 68 F6BA27E8 PUSH 0xE827BAF6
00547467 8D92 061D40C7 LEA EDX,DWORD PTR DS:[EDX+0xC7401D06> *******
0054746D 8D6424 20 LEA ESP,DWORD PTR SS:[ESP+0x20]
00547471 0F84 EC270700 JE 005B9C63 *******
堆栈往上翻
[Asm] 纯文本查看 复制代码 0012F5A0 0040F20D UnpackMe.0040F20D
0012F5A4 000007E8
0012F5A8 00000007
0012F5AC 00000000
0012F5B0 001AD95B ASCII "编辑框1"
0012F5B4 00000000
0012F5B8 0012F658
0012F5BC 00414170 UnpackMe.00414170
0012F5C0 00D43940 ASCII "^]\[ZY"
0012F5C4 001AD95B ASCII "编辑框1"
0012F5C8 00D45298
0012F5CC 7C80BE76 kernel32.7C80BE76
0012F5D0 001AD95B ASCII "编辑框1"
0012F5D4 00D452D8
0012F5D8 00000000
0012F5DC 0012F5D0
0012F5E0 FFFFFFFF
0012F5E4 0012F620
0012F5E8 7C839AC0 kernel32.7C839AC0
0012F5EC 7C80BE80 kernel32.7C80BE80
[Asm] 纯文本查看 复制代码 00518DDB 60 PUSHAD
00518DDC 895C24 1C MOV DWORD PTR SS:[ESP+0x1C],EBX *******
00518DE0 E9 04870500 JMP 005714E9
00518DE5 E8 0FB10500 CALL 00573EF9 *******
00518DEA 9C PUSHFD
00518DEB 90 NOP
00518DEC 60 PUSHAD
00518DED 51 PUSH ECX
00518DEE 68 BA9A5183 PUSH 0x83519ABA
[Asm] 纯文本查看 复制代码 005714E9 60 PUSHAD
005714EA 9C PUSHFD
005714EB 8D6424 40 LEA ESP,DWORD PTR SS:[ESP+0x40] *******
005714EF E8 F705E9FF CALL 00401AEB *******
005714F4 0FA3C9 BT ECX,ECX *******
005714F7 F8 CLC
005714F8 9C PUSHFD
005714F9 E8 B9120000 CALL 005727B7 *******
005714FE 90 NOP
005714FF 66:0FBEC8 MOVSX CX,AL
00571503 59 POP ECX
获取编辑框内容。
[Asm] 纯文本查看 复制代码 005727B7 83C4 0C ADD ESP,0xC *******
005727BA 68 926D1A45 PUSH 0x451A6D92
005727BF C60424 57 MOV BYTE PTR SS:[ESP],0x57 *******
005727C3 84E8 TEST AL,CH *******
005727C5 0FBAE7 17 BT EDI,0x17
005727C9 837D E4 06 CMP DWORD PTR SS:[EBP-0x1C],0x6 *******
005727CD 9C PUSHFD
005727CE C64424 04 76 MOV BYTE PTR SS:[ESP+0x4],0x76
005727D3 8D6424 08 LEA ESP,DWORD PTR SS:[ESP+0x8]
005727D7 0F85 99A70400 JNZ 005BCF76 *******
005727DD 66:0FBED9 MOVSX BX,CL
005727E1 8B5D F0 MOV EBX,DWORD PTR SS:[EBP-0x10] *******
005727E4 9C PUSHFD
以上简单理解 判断编辑框内容位数 是否为6
[Asm] 纯文本查看 复制代码 005727D7 90 NOP *******
005727D8 90 NOP
005727D9 90 NOP
005727DA 90 NOP
005727DB 90 NOP
005727DC 90 NOP
005727DD 66:0FBED9 MOVSX BX,CL
005727E1 8B5D F0 MOV EBX,DWORD PTR SS:[EBP-0x10] *******
005727E4 9C PUSHFD
005727E5 60 PUSHAD
005727E6 8D6424 24 LEA ESP,DWORD PTR SS:[ESP+0x24] *******
005727EA E8 4BE9E8FF CALL 0040113A *******
005727EF 66:0FC8 BSWAP AX
005727F2 E8 C8FBFCFF CALL 005423BF
005727F7 8D9B 01000000 LEA EBX,DWORD PTR DS:[EBX+0x1] *******
005727FD E9 6DBA0200 JMP 0059E26F
00572802 9C PUSHFD
00572803 90 NOP
00572804 9C PUSHFD
00572805 FF3424 PUSH DWORD PTR SS:[ESP] *******
00572808 60 PUSHAD
00572809 875424 28 XCHG DWORD PTR SS:[ESP+0x28],EDX
0057280D 895C24 14 MOV DWORD PTR SS:[ESP+0x14],EBX *******
00572811 9C PUSHFD
前面已经简单讲 如何识别花指令 看不懂的去自己随便写个CM V段代码自己玩。 都是些基础知识。
PS : 要随时注意堆栈 和寄存器的变化,主要观察压入的参数。 当前寄存器 bx ax dx的值。
[Asm] 纯文本查看 复制代码 005423BF C0E8 05 SHR AL,0x5
005423C2 D0D0 RCL AL,1
005423C4 B8 00000000 MOV EAX,0x0 *******
005423C9 F6C6 3D TEST DH,0x3D
005423CC 85E8 TEST EAX,EBP
005423CE 3BC1 CMP EAX,ECX *******
005423D0 E8 B8D0FCFF CALL 0050F48D *******
005423D5 60 PUSHAD
005423D6 E8 AB34FEFF CALL 00525886
005423DB 8D89 01000000 LEA ECX,DWORD PTR DS:[ECX+0x1]
005423E1 E9 29720800 JMP 005C960F
005423E6 E8 D7FAFDFF CALL 00521EC2
[Asm] 纯文本查看 复制代码 005AB501 E8 AEDCF8FF CALL 005391B4
005AB506 8B89 EF6A0F00 MOV ECX,DWORD PTR DS:[ECX+0xF6AEF]
005AB50C ^ E9 94C8FCFF JMP 00577DA5
005AB511 C70424 01000000 MOV DWORD PTR SS:[ESP],0x1
005AB518 8D98 C38B26A8 LEA EBX,DWORD PTR DS:[EAX+0xA8268BC3>
[Asm] 纯文本查看 复制代码 005B937C 8D6424 2C LEA ESP,DWORD PTR SS:[ESP+0x2C]
005B9380 ^ 0F85 55C6F5FF JNZ 005159DB
005B9386 8D9E 22120AB8 LEA EBX,DWORD PTR DS:[ESI+0xB80A1222>
005B938C 8D1CDD 271EFE7E LEA EBX,DWORD PTR DS:[EBX*8+0x7EFE1E>
005B9393 8B5D F0 MOV EBX,DWORD PTR SS:[EBP-0x10]
如果你之前注意了寄存器的值 和堆栈
那么下面这些VM代码 就是 字串文本参数 入栈 判断条件 转移
[Asm] 纯文本查看 复制代码
005ACD5F F5 CMC
005ACD60 8A03 MOV AL,BYTE PTR DS:[EBX]
005ACD62 D2EB SHR BL,CL
005ACD64 FECF DEC BH
005ACD66 53 PUSH EBX
005ACD67 08C7 OR BH,AL
005ACD69 25 FF000000 AND EAX,0xFF *******
005ACD6E 68 D04F1E1D PUSH 0x1D1E4FD0
005ACD73 C74424 08 0103008>MOV DWORD PTR SS:[ESP+0x8],0x80000301 *******
005ACD7B 8D6424 08 LEA ESP,DWORD PTR SS:[ESP+0x8] *******
005ACD7F 66:0FBED9 MOVSX BX,CL
005ACD83 6A 00 PUSH 0x0 *******
005ACD85 60 PUSHAD
005ACD86 66:0FCB BSWAP BX
005ACD89 894424 1C MOV DWORD PTR SS:[ESP+0x1C],EAX *******
005ACD8D 66:0FBEDB MOVSX BX,BL
005ACD91 C74424 18 0200000>MOV DWORD PTR SS:[ESP+0x18],0x2 *******
005ACD99 9C PUSHFD
005ACD9A 8D9F 14873970 LEA EBX,DWORD PTR DS:[EDI+0x70398714]
005ACDA0 66:0FBED9 MOVSX BX,CL
005ACDA4 BB A01C4000 MOV EBX,00401CA0 *******
005ACDA9 ^ E9 700BF9FF JMP 0053D91E
005ACDAE 8DAD 41AA5C11 LEA EBP,DWORD PTR SS:[EBP+0x115CAA41]
005ACDB4 55 PUSH EBP
005ACDB5 876C24 44 XCHG DWORD PTR SS:[ESP+0x44],EBP
005ACDB9 9C PUSHFD
005ACDBA 9C PUSHFD
005ACDBB 9C PUSHFD
005ACDBC C60424 E7 MOV BYTE PTR SS:[ESP],0xE7
005ACDC0 FF7424 50 PUSH DWORD PTR SS:[ESP+0x50] *******
005ACDC4 C2 5400 RETN 0x54
[Asm] 纯文本查看 复制代码 0051CAEB 837D D8 31 CMP DWORD PTR SS:[EBP-0x28],0x31 *******
0051CAEF E9 8F230500 JMP 0056EE83 *******
0051CAF4 F7D5 NOT EBP
0051CAF6 BD 3B384400 MOV EBP,0044383B
0051CAFB FF3424 PUSH DWORD PTR SS:[ESP]
0051CAFE E9 959A0000 JMP 00526598
0051CB03 E8 C7940800 CALL 005A5FCF
跳转
[Asm] 纯文本查看 复制代码 0056EE83 56 PUSH ESI
0056EE84 8D6424 04 LEA ESP,DWORD PTR SS:[ESP+0x4] *******
0056EE88 ^ 0F85 4D6BFAFF JNZ 005159DB *******
0056EE8E 66:F7D3 NOT BX
0056EE91 66:0FCB BSWAP BX
上面的代码没贴完。可以自己跟踪
可视化的代码 有点粗糙。。
[Asm] 纯文本查看 复制代码 PUSH 0x80000301
PUSH 0x0
PUSH EAX
PUSH 0x2
MOV EBX,00401CA0
CALL 00401AF1
ADD ESP,0x1C
MOV DWORD PTR SS:[EBP-0x28],EAX
CMP DWORD PTR SS:[EBP-0x28],0x31
JNZ
这里是 典型的一个if 语句。 前面几楼找到的第一个判断编辑框位数是否为6 的也是。
有兴趣的可以自己子程序全部可视化下虚拟机代码
[Asm] 纯文本查看 复制代码 00587B57 8D6424 0C LEA ESP,DWORD PTR SS:[ESP+0xC] ×××××
00587B5B E8 DA95E7FF CALL 0040113A ×××××
00587B60 98 CWDE
00587B61 F5 CMC
00587B62 F8 CLC
00587B63 66:29F0 SUB AX,SI
00587B66 B8 05000000 MOV EAX,0x5 ×××××
00587B6B E8 1B1BFEFF CALL 0056968B ×××××
00587B70 85FF TEST EDI,EDI
00587B72 C64424 1C AB MOV BYTE PTR SS:[ESP+0x1C],0xAB
00587B77 52 PUSH EDX
00587B78 8D6424 2C LEA ESP,DWORD PTR SS:[ESP+0x2C]
00587B7C ^ 0F87 3CC3FCFF JA 00553EBE
00587B82 60 PUSHAD
[Asm] 纯文本查看 复制代码 005889D2 60 PUSHAD
005889D3 3BC1 CMP EAX,ECX ×××××
005889D5 68 1BB17BBF PUSH 0xBF7BB11B
005889DA E8 617AF8FF CALL 00510440 ×××××
005889DF C60424 D4 MOV BYTE PTR SS:[ESP],0xD4
005889E3 E8 240F0000 CALL 0058990C
005889E8 8DB6 5D2018E1 LEA ESI,DWORD PTR DS:[ESI+0xE118205D]
005889EE E8 D7BAF9FF CALL 005244CA
005BD731 60 PUSHAD
005BD732 895D D0 MOV DWORD PTR SS:[EBP-0x30],EBX
005BD735 84F9 TEST CL,BH
005BD737 F9 STC
005BD738 8B5D D0 MOV EBX,DWORD PTR SS:[EBP-0x30]
005BD73B 53 PUSH EBX
005BD73C 80FE 4A CMP DH,0x4A
005BD73F 803B 3D CMP BYTE PTR DS:[EBX],0x3D
005BD742 66:897424 08 MOV WORD PTR SS:[ESP+0x8],SI
005BD747 E8 CA6DF6FF CALL 00524516
005BD74C 54 PUSH ESP
005BD74D E8 211BFBFF CALL 0056F273
005BD752 890424 MOV DWORD PTR SS:[ESP],EAX
005BD755 ^ E9 5B46FBFF JMP 00571DB5
[Asm] 纯文本查看 复制代码 0053BB11 66:C70424 579D MOV WORD PTR SS:[ESP],0x9D57 ×××
0053BB17 8D6424 30 LEA ESP,DWORD PTR SS:[ESP+0x30] ×××
0053BB1B ^ 0F85 BA9EFDFF JNZ 005159DB ×××
这段可视化的代码 大概是这样的
[Asm] 纯文本查看 复制代码 MOV EAX,0x5
CMP EAX,ECX
JL L001
PUSH 0x1
CALL 00401AF7
ADD ESP,0x4
L001:
ADD EBX,EAX
MOV DWORD PTR SS:[EBP-0x30],EBX
MOV EBX,DWORD PTR SS:[EBP-0x30]
CMP BYTE PTR DS:[EBX],0x3D
JNZ
[Asm] 纯文本查看 复制代码 0053BB11 66:C70424 579D MOV WORD PTR SS:[ESP],0x9D57
0053BB17 8D6424 30 LEA ESP,DWORD PTR SS:[ESP+0x30]
0053BB1B 90 NOP
0053BB1C 90 NOP
0053BB1D 90 NOP
0053BB1E 90 NOP
0053BB1F 90 NOP
0053BB20 90 NOP
0053BB21 68 C2E06043 PUSH 0x4360E0C2
[Asm] 纯文本查看 复制代码 0053BB2D 60 PUSHAD ××××
0053BB2E 884C24 04 MOV BYTE PTR SS:[ESP+0x4],CL ××××
0053BB32 8D6424 28 LEA ESP,DWORD PTR SS:[ESP+0x28]
0053BB36 E8 FF55ECFF CALL 0040113A ××××
0053BB3B D4 4E AAM 0x4E
0053BB3D B8 05000000 MOV EAX,0x5 ××××
0053BB42 84C0 TEST AL,AL ××××
0053BB44 38C6 CMP DH,AL
0053BB46 F9 STC
0053BB47 E8 AFB60700 CALL 005B71FB ××××
[Asm] 纯文本查看 复制代码 005B71FB 3BC1 CMP EAX,ECX ××××
005B71FD ^ E9 6E95FCFF JMP 00580770 ××××
[Asm] 纯文本查看 复制代码 00545877 66:85D0 TEST AX,DX
0054587A 83EC FC SUB ESP,-0x4 ××××
0054587D 0F8C F43C0000 JL 00549577 ××××
[Asm] 纯文本查看 复制代码
00545884 03D8 ADD EBX,EAX
00545886 04 9B ADD AL,0x9B
00545888 F9 STC
00545889 895D C8 MOV DWORD PTR SS:[EBP-0x38],EBX ××××
0054588C 84F5 TEST CH,DH
0054588E 66:0FBCDD BSF BX,BP
00545892 F5 CMC
00545893 3C 7E CMP AL,0x7E
00545895 68 01030080 PUSH 0x80000301 ××××
0054589A 80F7 73 XOR BH,0x73
0054589D 6A 00 PUSH 0x0 ××××
0054589F D0D8 RCR AL,1 ××××
005458A1 66:C1D3 07 RCL BX,0x7
005458A5 66:0FBAFB 07 BTC BX,0x7
005458AA C0F3 02 SAL BL,0x2
005458AD 68 6F000000 PUSH 0x6F
005458B2 F9 STC
005458B3 C0EF 06 SHR BH,0x6
005458B6 0F90C3 SETO BL
005458B9 66:0FA5CB SHLD BX,CX,CL
005458BD 8B5D C8 MOV EBX,DWORD PTR SS:[EBP-0x38] ××××
005458C0 D0C0 ROL AL,1
005458C2 04 28 ADD AL,0x28
005458C4 FEC8 DEC AL
005458C6 8A03 MOV AL,BYTE PTR DS:[EBX]
005458C8 D0F3 SAL BL,1
005458CA 25 FF000000 AND EAX,0xFF
005458CF 8D9F 6F3A11BF LEA EBX,DWORD PTR DS:[EDI+0xBF113A6F]
005458D5 52 PUSH EDX ××××
005458D6 9C PUSHFD
005458D7 C74424 04 0103008>MOV DWORD PTR SS:[ESP+0x4],0x80000301 ××××
005458DF E9 E2E30000 JMP 00553CC6
[Asm] 纯文本查看 复制代码 00553CC6 C70424 00000000 MOV DWORD PTR SS:[ESP],0x0 ××××
00553CCD 60 PUSHAD
00553CCE 894424 1C MOV DWORD PTR SS:[ESP+0x1C],EAX ××××
00553CD2 60 PUSHAD
00553CD3 8D1C9D 4FFE850B LEA EBX,DWORD PTR DS:[EBX*4+0xB85FE4F]
00553CDA 0FCB BSWAP EBX
00553CDC C74424 38 0200000>MOV DWORD PTR SS:[ESP+0x38],0x2 ××××
00553CE4 881C24 MOV BYTE PTR SS:[ESP],BL
00553CE7 68 D374C1E3 PUSH 0xE3C174D3
00553CEC 68 8E8DEE56 PUSH 0x56EE8D8E
[Asm] 纯文本查看 复制代码 00542308 BB A01C4000 MOV EBX,00401CA0 ×××××
0054230D 68 1FC23CC9 PUSH 0xC93CC21F
00542312 9C PUSHFD
00542313 9C PUSHFD
00542314 9C PUSHFD
00542315 8D6424 50 LEA ESP,DWORD PTR SS:[ESP+0x50] ×××××
00542319 E8 D3F7EBFF CALL 00401AF1 ×××××
0054231E E9 46FE0600 JMP 005B2169 ×××××
[Asm] 纯文本查看 复制代码 005B2169 83C4 1C ADD ESP,0x1C ×××××
005B216C 66:0FBAE4 09 BT SP,0x9
005B2171 F5 CMC
005B2172 66:0FBAE0 04 BT AX,0x4
005B2177 0F8C D9620100 JL 005C8456 ×××××
005B217D 8945 C0 MOV DWORD PTR SS:[EBP-0x40],EAX ×××××
005B2180 F8 CLC
005B2181 68 1C275DD7 PUSH 0xD75D271C
005B2186 837D C0 52 CMP DWORD PTR SS:[EBP-0x40],0x52 ×××××
005B218A 9C PUSHFD
005B218B 9C PUSHFD
005B218C 8D6424 0C LEA ESP,DWORD PTR SS:[ESP+0xC]
005B2190 ^ 0F85 4538F6FF JNZ 005159DB ×××××
可视化的 还是有点粗糙
[Asm] 纯文本查看 复制代码 PUSH 0x1
CALL 00401AF7
ADD ESP,0x4
ADD EBX,EAX
MOV DWORD PTR SS:[EBP-0x38],EBX
PUSH 0x80000301
PUSH 0x0
PUSH 0x6F
MOV EBX,DWORD PTR SS:[EBP-0x38]
MOV AL,BYTE PTR DS:[EBX]
AND EAX,0xFF
PUSH 0x80000301
PUSH 0x0
PUSH EAX
PUSH 0x2
MOV EBX,00401CA0
CALL 00401AF1
ADD ESP,0x1C
MOV DWORD PTR SS:[EBP-0x40],EAX
CMP DWORD PTR SS:[EBP-0x40],0x52
JNZ
[Asm] 纯文本查看 复制代码
005B2190 90 NOP ××××
005B2191 90 NOP
005B2192 90 NOP
005B2193 90 NOP
005B2194 90 NOP
005B2195 90 NOP
005B2196 3C 01 CMP AL,0x1 ××××
005B2198 66:D1D0 RCL AX,1
005B219B 66:0FBDC7 BSR AX,DI
005B219F 66:0FBAF8 06 BTC AX,0x6
005B21A4 68 01030080 PUSH 0x80000301 ××××
005B21A9 98 CWDE
005B21AA 60 PUSHAD
005B21AB C74424 1C 0000000>MOV DWORD PTR SS:[ESP+0x1C],0x0 ××××
005B21B3 ^ E9 F180FFFF JMP 005AA2A9 ××××
005B21B8 E8 CA9AF7FF CALL 0052BC87
[Asm] 纯文本查看 复制代码 005AA2AA 66:0D 9A6A OR AX,0x6A9A
005AA2AE C74424 18 0600000>MOV DWORD PTR SS:[ESP+0x18],0x6 ××××
005AA2B6 D2DC RCR AH,CL
005AA2B8 C74424 14 0500008>MOV DWORD PTR SS:[ESP+0x14],0x80000005 ××××
005AA2C0 F9 STC
005AA2C1 08E0 OR AL,AH
005AA2C3 C74424 10 0000000>MOV DWORD PTR SS:[ESP+0x10],0x0 ××××
005AA2CB C0D0 05 RCL AL,0x5 ××××
005AA2CE E9 86020000 JMP 005AA559 ××××
[Asm] 纯文本查看 复制代码 005C7B61 8B45 EC MOV EAX,DWORD PTR SS:[EBP-0x14] ××××
005C7B64 F9 STC
005C7B65 F9 STC
005C7B66 85C0 TEST EAX,EAX ××××
005C7B68 60 PUSHAD
005C7B69 9C PUSHFD
005C7B6A 9C PUSHFD
005C7B6B 8D6424 38 LEA ESP,DWORD PTR SS:[ESP+0x38] ××××
005C7B6F ^ 0F85 7D87F5FF JNZ 005202F2 ××××
[Asm] 纯文本查看 复制代码 005B2190 90 NOP
005B2191 90 NOP
005B ..
可视化的,
[Asm] 纯文本查看 复制代码 PUSH 0x80000301
PUSH 0x0
PUSH 0x6
PUSH 0x80000005
PUSH 0x0
MOV EAX,DWORD PTR SS:[EBP-0x14]
TEST EAX,EAX
JNZ
[Asm] 纯文本查看 复制代码 005C7B61 8B45 EC MOV EAX,DWORD PTR SS:[EBP-0x14] ×××××
005C7B64 F9 STC
005C7B65 F9 STC
005C7B66 85C0 TEST EAX,EAX ×××××
005C7B68 60 PUSHAD
005C7B69 9C PUSHFD
005C7B6A 9C PUSHFD
005C7B6B 8D6424 38 LEA ESP,DWORD PTR SS:[ESP+0x38] ×××××
[Asm] 纯文本查看 复制代码 005A3983 50 PUSH EAX ×××××
005A3984 E8 15DE0000 CALL 005B179E ×××××
[Asm] 纯文本查看 复制代码 005B179E 5B POP EBX
005B179F E8 825AFCFF CALL 00577226 ×××××
[Asm] 纯文本查看 复制代码
00577226 C70424 02000000 MOV DWORD PTR SS:[ESP],0x2 ××
0057722D 60 PUSHAD
0057722E BB F01D4000 MOV EBX,00401DF0 ××
00577233 8D6424 20 LEA ESP,DWORD PTR SS:[ESP+0x20] ××
00577237 0F82 6C110200 JB 005983A9
0057723D E8 AFA8E8FF CALL 00401AF1
00577242 60 PUSHAD
00577243 66:0FA3FF BT DI,DI
00577247 83C4 3C ADD ESP,0x3C
0057724A 9C PUSHFD
0057724B 80F9 BC CMP CL,0xBC
0057724E 8945 B8 MOV DWORD PTR SS:[EBP-0x48],EAX
00577251 D4 F3 AAM 0xF3
00577253 66:F7C6 E521 TEST SI,0x21E5
00577258 66:15 9D16 ADC AX,0x169D
0057725C F8 CLC
0057725D B8 A32F4800 MOV EAX,00482FA3 ××
00577262 60 PUSHAD
00577263 29C9 SUB ECX,ECX ××
00577265 F5 CMC
00577266 9C PUSHFD
00577267 F9 STC
00577268 85C0 TEST EAX,EAX ××
0057726A 9C PUSHFD
0057726B 66:C70424 2718 MOV WORD PTR SS:[ESP],0x1827
00577271 E8 AC4C0300 CALL 005ABF22 ××
[Asm] 纯文本查看 复制代码 005ABF22 890C24 MOV DWORD PTR SS:[ESP],ECX ××××
005ABF25 8D6424 30 LEA ESP,DWORD PTR SS:[ESP+0x30] ××××
005ABF29 0F84 09000000 JE 005ABF38 ××××
005ABF2F FEC1 INC CL
005ABF31 66:0FBDCC BSR CX,SP
005ABF35 8B48 04 MOV ECX,DWORD PTR DS:[EAX+0x4] ××××
[Asm] 纯文本查看 复制代码 005ABF35 8B48 04 MOV ECX,DWORD PTR DS:[EAX+0x4]
0059CD7C 50 PUSH EAX
0059CD7D 83C0 08 ADD EAX,0x8
0059CD80 38F3 CMP BL,DH
0059CD82 F9 STC
0059CD83 886C24 08 MOV BYTE PTR SS:[ESP+0x8],CH
0059CD87 874424 20 XCHG DWORD PTR SS:[ESP+0x20],EAX
0059CD8B 14 9B ADC AL,0x9B
0059CD8D F8 CLC
0059CD8E 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-0x48]
0059CD91 66:85C6 TEST SI,AX
0059CD94 66:0FA3D4 BT SP,DX
0059CD98 E8 D1AAF7FF CALL 0051786E
005ABF38 ^ 0F82 562EFBFF JB 0055ED94
005ABF3E 38C1 CMP CL,AL
[Asm] 纯文本查看 复制代码 0059CD7C 50 PUSH EAX ××××
0059CD7D 83C0 08 ADD EAX,0x8 ××××
0059CD80 38F3 CMP BL,DH
0059CD82 F9 STC
0059CD83 886C24 08 MOV BYTE PTR SS:[ESP+0x8],CH
0059CD87 874424 20 XCHG DWORD PTR SS:[ESP+0x20],EAX
0059CD8B 14 9B ADC AL,0x9B
0059CD8D F8 CLC
0059CD8E 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-0x48]
0059CD91 66:85C6 TEST SI,AX
0059CD94 66:0FA3D4 BT SP,DX
0059CD98 E8 D1AAF7FF CALL 0051786E
[Asm] 纯文本查看 复制代码 0051786E 33DB XOR EBX,EBX ×××
00517870 E9 0D8C0300 JMP 00550482 ×××
[Asm] 纯文本查看 复制代码 0057FC58 85C0 TEST EAX,EAX ××××
0057FC5A 887C24 04 MOV BYTE PTR SS:[ESP+0x4],BH
0057FC5E 8D6424 28 LEA ESP,DWORD PTR SS:[ESP+0x28]
0057FC62 ^ 0F84 5609FAFF JE 005205BE
[Asm] 纯文本查看 复制代码 0057FC68 80DF 39 SBB BH,0x39
0057FC6B 8B58 04 MOV EBX,DWORD PTR DS:[EAX+0x4] ××××
0057FC6E F5 CMC
0057FC6F 83C0 08 ADD EAX,0x8 ××××
0057FC72 ^ E9 6133FBFF JMP 00532FD8 ××××
[Asm] 纯文本查看 复制代码 0050F335 890424 MOV DWORD PTR SS:[ESP],EAX ×××××
0050F338 40 INC EAX ×××××
0050F339 3BD9 CMP EBX,ECX
0050F33B 88DC MOV AH,BL
0050F33D F6D4 NOT AH
0050F33F 66:0FBEC2 MOVSX AX,DL
0050F343 B8 01000000 MOV EAX,0x1 ×××××
0050F348 E8 A8D50300 CALL 0054C8F5 ×××××
[Asm] 纯文本查看 复制代码 0058B4E7 8D6424 08 LEA ESP,DWORD PTR SS:[ESP+0x8]
0058B4EB ^ 0F85 CD0BFCFF JNZ 0054C0BE ×××××
0058B4F1 60 PUSHAD
0058B4F2 60 PUSHAD
0058B4F3 FF7424 10 PUSH DWORD PTR SS:[ESP+0x10] ×××××
0058B4F7 48 DEC EAX
0058B4F8 66:39FA CMP DX,DI
0058B4FB 66:85ED TEST BP,BP
0058B4FE 66:897C24 04 MOV WORD PTR SS:[ESP+0x4],DI ×××××
0058B503 85C9 TEST ECX,ECX ×××××
0058B505 ^ E9 AC64FDFF JMP 005619B6 ×××××
[Asm] 纯文本查看 复制代码 005619D5 83C4 0C ADD ESP,0xC ×××××
005619D8 F9 STC
005619D9 85C0 TEST EAX,EAX ×××××
005619DB ^ E9 4C6DFAFF JMP 0050872C
[Asm] 纯文本查看 复制代码 0050872C 68 00A10B29 PUSH 0x290BA100
00508731 9C PUSHFD
00508732 B8 00000000 MOV EAX,0x0 ×××××
00508737 60 PUSHAD
00508738 5B POP EBX
00508739 86C3 XCHG BL,AL
0050873B 0F94C0 SETE AL
0050873E E8 FC840500 CALL 00560C3F ×××××
[Asm] 纯文本查看 复制代码 00560C41 8945 B4 MOV DWORD PTR SS:[EBP-0x4C],EAX ×××××
00560C44 80E7 44 AND BH,0x44
00560C47 F8 CLC
00560C48 0FBAEB 1C BTS EBX,0x1C
00560C4C 9C PUSHFD
00560C4D 8B5D B8 MOV EBX,DWORD PTR SS:[EBP-0x48]
00560C50 84F0 TEST AL,DH ×××××
00560C52 F6C4 70 TEST AH,0x70
00560C55 85DB TEST EBX,EBX ×××××
00560C57 57 PUSH EDI ×××××
[Asm] 纯文本查看 复制代码 005B701C 8D6424 0C LEA ESP,DWORD PTR SS:[ESP+0xC] ×××
005B7020 E8 C6AAE4FF CALL 00401AEB ×××
[Asm] 纯文本查看 复制代码 00549906 83C4 08 ADD ESP,0x8
00549909 60 PUSHAD
0054990A 837D B4 00 CMP DWORD PTR SS:[EBP-0x4C],0x0
0054990E 55 PUSH EBP
0054990F 8D6424 24 LEA ESP,DWORD PTR SS:[ESP+0x24]
00549913 ^ 0F84 C2C0FCFF JE 005159DB
00549919 66:0FBEC1 MOVSX AX,CL
[Asm] 纯文本查看 复制代码 005C0316 84CC TEST AH,CL
005C0318 0FBAE1 12 BT ECX,0x12
005C031C F8 CLC
005C031D 85C0 TEST EAX,EAX
005C031F 9C PUSHFD
005C0320 E8 1E75F7FF CALL 00537843
[Asm] 纯文本查看 复制代码 0053784B /0F84 8C710600 JE 0059E9DD
00537851 |54 PUSH ESP
00537852 |66:29E8 SUB AX,BP
00537855 |9F LAHF
00537856 |08E8 OR AL,CH
00537858 |C70424 05000080 MOV DWORD PTR SS:[ESP],0x80000005
0053785F |66:C1E8 02 SHR AX,0x2
00537863 |6A 00 PUSH 0x0
00537865 |0FB6C2 MOVZX EAX,DL
00537868 |C0F4 02 SAL AH,0x2
0053786B |F5 CMC
0053786C |8B45 F8 MOV EAX,DWORD PTR SS:[EBP-0x8]
0053786F |60 PUSHAD
00537870 |60 PUSHAD
00537871 |85C0 TEST EAX,EAX
00537873 |E8 F5ED0200 CALL 0056666D
00537878 |8D80 A3804249 LEA EAX,DWORD PTR DS:[EAX+0x494280A3]
0053787E |5D POP EBP
0053787F |66:0FB6EA MOVZX BP,DL
00537883 |66:0FB6EA MOVZX BP,DL
00537887 |66:F7D5 NOT BP
0053788A |89C5 MOV EBP,EAX
[Asm] 纯文本查看 复制代码 EAX 001B14E0
ECX 7C93003D ntdll.7C93003D
EDX 00560000 UnpackMe.00560000
EBX 001B11D0 ASCII "验证成功!"
ESP 0012F66C
EBP 0012F704
ESI 00482FA3 UnpackMe.00482FA3
EDI 001AEF92
EIP 00537873 UnpackMe.00537873
[Asm] 纯文本查看 复制代码 005C7B61 8B45 EC MOV EAX,DWORD PTR SS:[EBP-0x14]
005C7B64 ...
[Asm] 纯文本查看 复制代码 00549913 ^\0F84 C2C0FCFF JE 005159DB 回车跟踪看下
[Asm] 纯文本查看 复制代码 005C0316 84CC TEST AH,CL
005C0318 0FBAE1 12 BT ECX,0x12
005C031C F8 CLC
005C031D 85C0 TEST EAX,EAX
005C031F 9C PUSHFD
005C0320 E8 1E75F7FF CALL 00537843
[Asm] 纯文本查看 复制代码 00537843 FF7424 04 PUSH DWORD PTR SS:[ESP+0x4]
00537847 8D6424 0C LEA ESP,DWORD PTR SS:[ESP+0xC]
0053784B 0F84 8C710600 JE 0059E9DD
00537851 54 PUSH ESP
00537852 66:29E8 SUB AX,BP
00537855 9F LAHF
00537856 08E8 OR AL,CH
00537858 C70424 05000080 MOV DWORD PTR SS:[ESP],0x80000005
0053785F 66:C1E8 02 SHR AX,0x2
00537863 6A 00 PUSH 0x0
00537865 0FB6C2 MOVZX EAX,DL
00537868 C0F4 02 SAL AH,0x2
0053786B F5 CMC
0053786C 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-0x8]
0053786F 60 PUSHAD
00537870 60 PUSHAD
00537871 85C0 TEST EAX,EAX
[Asm] 纯文本查看 复制代码 0056666D 8D6424 44 LEA ESP,DWORD PTR SS:[ESP+0x44]
00566671 0F85 14160600 JNZ 005C7C8B
清晰明了
[Asm] 纯文本查看 复制代码 JE L001
MOV ECX,DWORD PTR DS:[EAX+0x4]
L001:
PUSH ECX
ADD EAX,0x8
PUSH EAX
MOV EAX,DWORD PTR SS:[EBP-0x48]
XOR EBX,EBX
TEST EAX,EAX
JE L02
MOV EBX,DWORD PTR DS:[EAX+0x4]
L02:
ADD EAX,0x8
PUSH EAX
CMP EBX,ECX
MOV EAX,0x1
JNZ L03
DEC EAX
TEST ECX,ECX
JE L03
CALL 0040115A
L03:
ADD ESP,0xC
TEST EAX,EAX
MOV EAX,0x0
SETE AL
MOV DWORD PTR SS:[EBP-0x4C],EAX
MOV EBX,DWORD PTR SS:[EBP-0x48]
TEST EBX,EBX
JE L04
PUSH EBX
CALL 00401AEB
ADD ESP,0x4
L04:
CMP DWORD PTR SS:[EBP-0x4C],0x0
JE L05
MOV EAX,0x1
JMP L06
L05:
XOR EAX,EAX
L06:
TEST EAX,EAX
JE
PUSH 0x80000005
JE L001
MOV ECX,DWORD PTR DS:[EAX+0x4]
L001:
PUSH ECX
ADD EAX,0x8
PUSH EAX
MOV EAX,DWORD PTR SS:[EBP-0x48]
XOR EBX,EBX
TEST EAX,EAX
JE L02
MOV EBX,DWORD PTR DS:[EAX+0x4]
L02:
ADD EAX,0x8
PUSH EAX
CMP EBX,ECX
MOV EAX,0x1
JNZ L03
DEC EAX
TEST ECX,ECX
JE L03
CALL 0040115A
L03:
ADD ESP,0xC
TEST EAX,EAX
MOV EAX,0x0
SETE AL
MOV DWORD PTR SS:[EBP-0x4C],EAX
MOV EBX,DWORD PTR SS:[EBP-0x48]
TEST EBX,EBX
JE L04
PUSH EBX
CALL 00401AEB
ADD ESP,0x4
L04:
CMP DWORD PTR SS:[EBP-0x4C],0x0
JE L05
MOV EAX,0x1
JMP L06
L05:
XOR EAX,EAX
L06:
TEST EAX,EAX
JE
PUSH 0x80000005
Patch
[Asm] 纯文本查看 复制代码 005727D7
0053BB1B
005B2190
00549913 nop
VM并不可怕, 怕的是你一开始碰到它就怂了 。 这样看起来 是不是这个Cm破解起来很简单? 我们只需要修改一处。
005727D7 快捷的修改。 直接让他转向最后压入成功参数的地方。 EAX=1
[Asm] 纯文本查看 复制代码 005727D7 90 NOP
005727D8 ^ E9 4571FDFF JMP 00549922
CrackMe和UnpakMe一起。主要是UnpackMe
http://www.52pojie.cn/thread-454609-1-1.html
(出处: 吾爱破解论坛) |