【文章标题】: 吾爱
破解2012CM大赛破文 - 风云思星
【文章作者】: 网络小牛
【软件名称】: 风云思星
【难 度】: 易
柿子要挑软的捏,我们先来个易难度的~~
先运行下看看,可以看到有失败框
我们OD载入,并查找字符串
可以查找到有注册失败的字符串
我们跟随到上面下断
0040331E |. E8 8C000100 call 风云CM.004133AF
00403323 |. 83C4 04 add esp,0x4
00403326 |> 8B45 DC mov eax,[local.9]
00403329 |. 50 push eax ; 就这里下断就可以了
0040332A |. 8B1D 93D04100 mov ebx,dword ptr ds:[0x41D093]
00403330 |. 85DB test ebx,ebx
00403332 |. 74 09 je X风云CM.0040333D
00403334 |. 53 push ebx
00403335 |. E8 75000100 call 风云CM.004133AF
0040333A |. 83C4 04 add esp,0x4
0040333D |> 58 pop eax
0040333E |. A3 93D04100 mov dword ptr ds:[0x41D093],eax
00403343 |. E8 67050000 call 风云CM.004038AF
00403348 |. E8 E0090000 call 风云CM.00403D2D
0040334D |. 8945 F8 mov [local.2],eax
00403350 |. 837D F8 01 cmp [local.2],0x1
00403354 |. 0F85 4F000000 jnz 风云CM.004033A9
0040335A |. 68 04000080 push 0x80000004
0040335F |. 6A 00 push 0x0
00403361 |. 68 C1924100 push 风云CM.004192C1 ; 提示
00403366 |. 68 01030080 push 0x80000301
0040336B |. 6A 00 push 0x0
0040336D |. 68 00000000 push 0x0
00403372 |. 68 04000080 push 0x80000004
00403377 |. 6A 00 push 0x0
00403379 |. 68 C6924100 push 风云CM.004192C6 ; 注册成功!
0040337E |. 68 03000000 push 0x3
下断后运行起来,然后随便输入用户名和假码断下
然后我们F8单步跟一下流程
发现在地址00403354的这个跳转在输入错误的密码的情况下会跳到004033A9这个地方,从而弹出“注册失败”
0040334D |. 8945 F8 mov [local.2],eax
00403350 |. 837D F8 01 cmp [local.2],0x1
00403354 |. 0F85 4F000000 jnz 风云CM.004033A9 ; 关键跳转
0040335A |. 68 04000080 push 0x80000004
0040335F |. 6A 00 push 0x0
00403361 |. 68 C1924100 push 风云CM.004192C1 ; 提示
00403366 |. 68 01030080 push 0x80000301
0040336B |. 6A 00 push 0x0
0040336D |. 68 00000000 push 0x0
00403372 |. 68 04000080 push 0x80000004
00403377 |. 6A 00 push 0x0
00403379 |. 68 C6924100 push 风云CM.004192C6 ; 注册成功!
0040337E |. 68 03000000 push 0x3
00403383 |. BB 00030000 mov ebx,0x300
00403388 |. E8 630E0100 call 风云CM.004141F0
0040338D |. 83C4 28 add esp,0x28
00403390 |. 68 64000000 push 0x64
00403395 |. 68 63D04100 push 风云CM.0041D063
0040339A |. 8B0424 mov eax,dword ptr ss:[esp]
0040339D |. 8B00 mov eax,dword ptr ds:[eax]
0040339F |. 8B00 mov eax,dword ptr ds:[eax]
004033A1 |. FF50 14 call dword ptr ds:[eax+0x14]
004033A4 |. E9 36000000 jmp 风云CM.004033DF
004033A9 |> 68 04000080 push 0x80000004
004033AE |. 6A 00 push 0x0
004033B0 |. 68 C1924100 push 风云CM.004192C1 ; 提示
004033B5 |. 68 01030080 push 0x80000301
004033BA |. 6A 00 push 0x0
004033BC |. 68 00000000 push 0x0
004033C1 |. 68 04000080 push 0x80000004
004033C6 |. 6A 00 push 0x0
004033C8 |. 68 D1924100 push 风云CM.004192D1 ; 注册失败!
004033CD |. 68 03000000 push 0x3
004033D2 |. BB 00030000 mov ebx,0x300
004033D7 |. E8 140E0100 call 风云CM.004141F0
所以我们只需要NOP掉那个关键跳转00403354 这个地方就可以了
好了,我们NOP掉就可以看到美妙的界面了~
爆破成功了,我们看到了成功后的闪亮文字。。。。。。。。。。。。。。。。。。。
我们接下来看看追码
然后我们到00403348这个call下断,输入假码断下
00403348 |. E8 E0090000 call 风云CM.00403D2D ; 关键CALL
这个CALL就是追码的关键地方,我们F7进去里面,再F8单步跟下流程
我们发现004042C7这个地方接下来有个循环,仔细观察会发现这个循环会循环8次
004042BB |.^\EB F5 \jmp X风云CM.004042B2
004042BD |> 8BC8 mov ecx,eax
004042BF |. 85C9 test ecx,ecx
004042C1 |> 0F84 19000000 je 风云CM.004042E0
004042C7 |> 51 /push ecx ; 接下来出真码的关键地方
004042C8 |. 8B03 |mov eax,dword ptr ds:[ebx]
004042CA |. 85C0 |test eax,eax
004042CC |. 74 0B |je X风云CM.004042D9
004042CE |. 53 |push ebx
004042CF |. 50 |push eax
004042D0 |. E8 DAF00000 |call 风云CM.004133AF
004042D5 |. 83C4 04 |add esp,0x4
004042D8 |. 5B |pop ebx
004042D9 |> 83C3 04 |add ebx,0x4
004042DC |. 59 |pop ecx
004042DD |. 49 |dec ecx
004042DE |.^ 75 E7 \jnz X风云CM.004042C7
004042E0 |> E8 CAF00000 call 风云CM.004133AF
我们仔细看寄存器窗口
发现每次循环跑到
004042CA |. 85C0 |test eax,eax
这个地方时,寄存器里面的EAX会出现对应的ASCLL字符串,我们记录下来,发现这8次循环出现的字符串分别为
64
1CB4A
34871
ACDD0
4921F
9F372
C4C54
B4F697
我们再对应作者给提供的注册码格式
得出本次追码
用户名 laoniu
追出来的64-1CB4A-34871-ACDD0-4921F-9F372-C4C54-B4F697
最后我们输入我们追出来的真码,验证下
发现成功~~呼呼 可爱的小窗出来了出来了