gg1211[CZG][XXCG]
难度 一般
==========================================================
【破解分析过程】
==========================分析过程====================================
PEID,查看没有加壳,ASPack 1.06b / 1.061b -> Alexey Solodovnikov家的壳
我晕,这个有工具Caspr110可以脱,这个在看雪有下载,
今天我破的这个crackme和前两个都是一个系列的,这个是难度最大的
下面我门将进行破解
先运行看看
有错误提示
呵呵,看来可以用w32dasm静态分析
看看,有什么错误提示
step5 has been solved step5 unlock....;反正就是说完整破戒
step5 has been solved ,but not ;反正是说暴力破解没有找到注册码什么的
step5 has not been solved.
Step5Key.key
看了这个,首先想到的是他是重启验证行的文件保护类,为什么??就是
这个动东了Step5Key.key
既然怀疑,那就验证
od载入
下断bp createfilea
连续来年两次f9
看见右下角有什么
0012FC80 00403839 /CALL 到 CreateFileA 来自 step5.00403834
0012FC84 0040B289 |FileName = "Step5Key.key"
0012FC88 80000000 |Access = GENERIC_READ
0012FC8C 00000003 |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
0012FC90 0012FCAC |pSecurity = 0012FCAC
0012FC94 00000003 |Mode = OPEN_EXISTING
0012FC98 00000000 |Attributes = 0
0012FC9C 00000000 \hTemplateFile = NULL
看来是真的
去掉断点,重新载入
既然这样那就开工了
先用notpad输入gg1211@123456789
然后保存为Step5Key.key,放在这个crackme 同一目录下
下断 bp readfile
运行,拦截
右下提示
0012FC78 00403C39 /CALL 到 ReadFile 来自 step5.00403C34
0012FC7C 0000006C |hFile = 0000006C (window)
0012FC80 00902A28 |Buffer = 00902A28
0012FC84 00000200 |BytesToRead = 200 (512.)
0012FC88 0012FC90 |pBytesRead = 0012FC90
0012FC8C 00000000 \pOverlapped = NULL
返回用户领空
00403C39 48 dec eax
00403C3A 74 08 je short step5.00403C44
00403C3C E8 730A0000 call step5.004046B4
00403C41 59 pop ecx
00403C42 5D pop ebp
00403C43 C3 retn
00403C44 8B45 FC mov eax,dword ptr ss:[ebp-4]
00403C47 59 pop ecx
00403C48 5D pop ebp
00403C49 C3 retn
00403C4A 90 nop
00403C4B 90 nop
00403C4C 55 push ebp
00403C4D 8BEC mov ebp,esp
00403C4F 8B45 10 mov eax,dword ptr ss:[ebp+10]
00403C52 50 push eax
00403C53 8B55 0C mov edx,dword ptr ss:[ebp+C]
00403C56 52 push edx
00403C57 8B4D 08 mov ecx,dword ptr ss:[ebp+8]
00403C5A 51 push ecx
00403C5B E8 D0FCFFFF call step5.00403930
00403C60 83C4 0C add esp,0C
00403C63 5D pop ebp
00403C64 C3 retn
00403C65 90 nop
00403C66 90 nop
00403C67 90 nop
00403C68 55 push ebp
00403C69 8BEC mov ebp,esp
00403C6B 51 push ecx
00403C6C 8B45 08 mov eax,dword ptr ss:[ebp+8]
00403C6F 3B05 1CBD4000 cmp eax,dword ptr ds:[40BD1C]
00403C75 72 0B jb short step5.00403C82
00403C77 6A 06 push 6
00403C79 E8 CA090000 call step5.00404648
00403C7E 59 pop ecx
00403C7F 59 pop ecx
00403C80 5D pop ebp
00403C81 C3 retn
00403C82 6A 00 push 0
00403C84 8D55 FC lea edx,dword ptr ss:[ebp-4]
00403C87 52 push edx
00403C88 8B4D 10 mov ecx,dword ptr ss:[ebp+10]
00403C8B 51 push ecx
00403C8C 8B55 0C mov edx,dword ptr ss:[ebp+C]
00403C8F 52 push edx
00403C90 8B0485 A4DD40>mov eax,dword ptr ds:[eax*4+40DDA>
00403C97 50 push eax
f8但步,可能有点远,多运行点,哟,谁扔砖头啊,你是大哥,我继续往下将还不成
到这里就要注意了
0040131C 59 pop ecx ; step5.0040B8B4
0040131D A2 75D84000 mov byte ptr ds:[40D875],al
00401322 8B0B mov ecx,dword ptr ds:[ebx]
00401324 A0 75D84000 mov al,byte ptr ds:[40D875]
00401329 8881 4CB14000 mov byte ptr ds:[ecx+40B14C],al
0040132F FF03 inc dword ptr ds:[ebx]
00401331 833B 0F cmp dword ptr ds:[ebx],0F
00401334 ^ 72 DB jb short step5.00401311
00401336 FF35 9CD84000 push dword ptr ds:[40D89C] ; step5.0040B8B4
0040133C E8 132A0000 call step5.00403D54
00401341 59 pop ecx
00401342 33D2 xor edx,edx
00401344 8913 mov dword ptr ds:[ebx],edx
00401346 EB 0F jmp short step5.00401357
00401348 |> 8A0B /MOV CL,BYTE PTR DS:[EBX] ;这里这个循环很重要
0040134A |. 80C1 77 |ADD CL,77
0040134D |. 8B03 |MOV EAX,DWORD PTR DS:[EBX]
0040134F |. 3088 4CB14000 |XOR BYTE PTR DS:[EAX+40B14C],CL
00401355 |. FF03 |INC DWORD PTR DS:[EBX]
00401357 |> 833B 0F CMP DWORD PTR DS:[EBX],0F
0040135A |.^72 EC \JB SHORT step5.00401348
67(g)xor 77 = 10
67(g)xor 78= 1F
31(1)xor 79= 48
32(2) xor 7A= 48
31(1)xor 7B= 4A
31(1)xor 7C= 4D
40(@)xor 7D= 3D
31(1)xor 7E= 4F
32(2)xor 7F= 4D
33(3)xor 80= B3
34(4)xor 81= B5
35(5)xor 82= B7
36(6)xor 83= B5
37(7)xor 84= B3
38(8)xor 85= BD
0040135C 68 5CB14000 push step5.0040B15C ; ASCII "Step 5 was fun!"
00401361 68 4CB14000 push step5.0040B14C
00401366 E8 4D130000 call step5.004026B8 ;这个call关键,等会要跟进去的
0040136B 83C4 08 add esp,8
0040136E 85C0 test eax,eax
00401370 75 61 jnz short step5.004013D3
00401372 68 30000400 push 40030
00401377 68 CBB24000 push step5.0040B2CB ; ASCII "Mission Complete"
0040137C 68 98B24000 push step5.0040B298 ; ASCII "Step5 has been solved
Step5 unlock code is: 1A2E3D"
00401381 6A 00 push 0
00401383 E8 868D0000 call <jmp.&USER32.MessageBoxA>
00401388 6A 01 push 1
来到关键call时跟进
004026B8 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4] ; step5.0040B14C
004026BC |. 8B5424 08 MOV EDX,DWORD PTR SS:[ESP+8]
004026C0 |. 53 PUSH EBX
004026C1 |. 33C0 XOR EAX,EAX
004026C3 |. 33DB XOR EBX,EBX
004026C5 |> 8A01 /MOV AL,BYTE PTR DS:[ECX]
004026C7 |. 8A1A |MOV BL,BYTE PTR DS:[EDX]
004026C9 |. 2BC3 |SUB EAX,EBX
004026CB |. 75 34 |JNZ SHORT step5.00402701
004026CD |. 84DB |TEST BL,BL
004026CF |. 74 30 |JE SHORT step5.00402701
004026D1 |. 8A41 01 |MOV AL,BYTE PTR DS:[ECX+1]
004026D4 |. 8A5A 01 |MOV BL,BYTE PTR DS:[EDX+1]
004026D7 |. 2BC3 |SUB EAX,EBX
004026D9 |. 75 26 |JNZ SHORT step5.00402701
004026DB |. 84DB |TEST BL,BL
004026DD |. 74 22 |JE SHORT step5.00402701
004026DF |. 8A41 02 |MOV AL,BYTE PTR DS:[ECX+2]
004026E2 |. 8A5A 02 |MOV BL,BYTE PTR DS:[EDX+2]
004026E5 |. 2BC3 |SUB EAX,EBX
004026E7 |. 75 18 |JNZ SHORT step5.00402701
004026E9 |. 84DB |TEST BL,BL
004026EB |. 74 14 |JE SHORT step5.00402701
004026ED |. 8A41 03 |MOV AL,BYTE PTR DS:[ECX+3]
004026F0 |. 8A5A 03 |MOV BL,BYTE PTR DS:[EDX+3]
004026F3 |. 2BC3 |SUB EAX,EBX
004026F5 |. 75 0A |JNZ SHORT step5.00402701
004026F7 |. 83C1 04 |ADD ECX,4
004026FA |. 83C2 04 |ADD EDX,4
004026FD |. 84DB |TEST BL,BL
004026FF |.^75 C4 \JNZ SHORT step5.004026C5
00402701 |> 5B POP EBX
00402702 \. C3 RETN
这个是个循环,
他将刚刚计算的数值逐个与"Step 5 was fun!"中的字符这个比较(包括空格)
刚刚计算的直不等则跳
所以
我们可以根据这个来反推Step5Key.key中各个元素的16进制值
53(S) xor 77 =24
74(t) xor 78 =0C
65(e) xor 79 =1C
70(p) xor 7A =0A
20(空格) XOR 7B =5B
35(5) XOR 7C =49
20(空格) XOR 7D =5D
77(w) XOR 7E = 09
61(a) XOR 7F =1E
73(s) XOR 80 =F3
20(空格) XOR 81=A1
66(f) XOR 82=E4
75(u) XOR 83=F6
6E(n) XOR 84 =EA
21(!) XOR 85=A4
就是他了gg1211[CZG]
这个就是Step5Key.key中所含要素
用16进制编辑输入240C1C0A5B495D091EF3A1E4F6EAA4
保存为Step5Key.key就可以了
再运行
看看,呵呵
提示完全破解
我会在附件中上传这个crackme和Step5Key.key
呵呵
晕,我没有权限上传
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课