破解方法应该很多,个人试了几个
爆破
下断点(用DASM 可以看到注册成功字符串,并下断点)
004054D8 . 8B07 mov eax,dword ptr ds:[edi] ; 用户名
004054DA . 8378 F8 09 cmp dword ptr ds:[eax-8],9
004054DE 0F85 A4000000 jnz 局域网查.00405588
004054E4 . 8B03 mov eax,dword ptr ds:[ebx] ; 假码
004054E6 . 8078 01 31 cmp byte ptr ds:[eax+1],31
004054EA 0F85 98000000 jnz 局域网查.00405588
004054F0 . 8A48 04 mov cl,byte ptr ds:[eax+4]
004054F3 . 80F9 39 cmp cl,39
004054F6 0F85 8C000000 jnz 局域网查.00405588
004054FC . 8078 06 39 cmp byte ptr ds:[eax+6],39
00405500 0F85 82000000 jnz 局域网查.00405588
00405506 . 8078 07 37 cmp byte ptr ds:[eax+7],37
0040550A 75 7C jnz short 局域网查.00405588
0040550C . 8078 09 35 cmp byte ptr ds:[eax+9],35
00405510 75 76 jnz short 局域网查.00405588
00405512 . 51 push ecx
00405513 . C605 5C544100>mov byte ptr ds:[41545C],1
0040551A . 8BCC mov ecx,esp
0040551C . 896424 10 mov dword ptr ss:[esp+10],esp
00405520 . 68 F4534100 push 局域网查.004153F4 ; ASCII "SOFTWARE\LanSee"
00405525 . E8 986F0000 call <jmp.&MFC42.#537>
0040552A . 68 02000080 push 80000002
0040552F . 8D4C24 18 lea ecx,dword ptr ss:[esp+18]
00405533 . E8 B83D0000 call 局域网查.004092F0
00405538 . 6A 01 push 1
0040553A . 51 push ecx
0040553B . 8BCC mov ecx,esp
0040553D . 896424 14 mov dword ptr ss:[esp+14],esp
00405541 . 68 F0534100 push 局域网查.004153F0 ; ASCII "Vip"
00405546 . C74424 2C 000>mov dword ptr ss:[esp+2C],0
0040554E . E8 6F6F0000 call <jmp.&MFC42.#537>
00405553 . 8D4C24 18 lea ecx,dword ptr ss:[esp+18]
00405557 . E8 A43E0000 call 局域网查.00409400
0040555C . 84C0 test al,al ,写入注册表vip=1
0040555E . 74 17 je short 局域网查.00405577
00405560 . 6A 00 push 0
00405562 . 6A 00 push 0
00405564 . 68 D8534100 push 局域网查.004153D8 ; 注册成功提示
00405569 . 8BCE mov ecx,esi
0040556B . E8 E2720000 call <jmp.&MFC42.#4224>
00405570 . 8BCE mov ecx,esi
00405572 . E8 F36F0000 call <jmp.&MFC42.#4853>
00405577 > 8D4C24 10 lea ecx,dword ptr ss:[esp+10]
0040557B . C74424 20 FFF>mov dword ptr ss:[esp+20],-1
00405583 . E8 D83D0000 call 局域网查.00409360
00405588 > 8B4C24 18 mov ecx,dword ptr ss:[esp+18]
1。跳过注册码验证并保存为vip
004054DE /0F85 A4000000 jnz 局域网查.00405588 -->修改为jnz 局域网查.00405512 '跳过所有验证
2。 启动验证法
00408CAC |. 68 F0534100 push 局域网查.004153F0 ; ASCII "Vip"
00408CB1 |. 899C24 9C0000>mov dword ptr ss:[esp+9C],ebx
00408CB8 |. E8 05380000 call <jmp.&MFC42.#537>
00408CBD |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
00408CC1 |. E8 BA060000 call 局域网查.00409380
00408CC6 3AC3 cmp al,bl ‘修改为cmp al,1
00408CC8 |. 0F85 27010000 jnz 局域网查.00408DF5
3。修改无限次使用法
00408D61 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
00408D65 |. C68424 900000>mov byte ptr ss:[esp+90],3
00408D6D |. E8 04380000 call <jmp.&MFC42.#2514>
00408D72 8B4424 08 mov eax,dword ptr ss:[esp+8] ; 传递使用次数,这里改为0,那使用次数就一直是0次 修改为mov eax,0
00408D76 40 inc eax
00408D77 83F8 1E cmp eax,1E ; 与30对比
00408D7A |. 894424 08 mov dword ptr ss:[esp+8],eax
00408D7E |. 77 07 ja short 局域网查.00408D87
注册码分析--> 写注册机
004054D8 . 8B07 mov eax,dword ptr ds:[edi] ; 用户名
004054DA . 8378 F8 09 cmp dword ptr ds:[eax-8],9 ; 用户名为9位
004054DE . 0F85 A4000000 jnz 局域网查.00405588
004054E4 . 8B03 mov eax,dword ptr ds:[ebx] ; 假码
004054E6 . 8078 01 31 cmp byte ptr ds:[eax+1],31 ; 注册码第二位为1
004054EA . 0F85 98000000 jnz 局域网查.00405588
004054F0 . 8A48 04 mov cl,byte ptr ds:[eax+4]
004054F3 . 80F9 39 cmp cl,39 ; 第二位为9
004054F6 . 0F85 8C000000 jnz 局域网查.00405588
004054FC . 8078 06 39 cmp byte ptr ds:[eax+6],39 ; 第7位为9
00405500 . 0F85 82000000 jnz 局域网查.00405588
00405506 . 8078 07 37 cmp byte ptr ds:[eax+7],37 ; 第8位为7
0040550A . 75 7C jnz short 局域网查.00405588
0040550C . 8078 09 35 cmp byte ptr ds:[eax+9],35 ; 第10位为5
1.用户名为任意9位
2.注册码为10位:注册码分析如上,例:X1XX9X97X5 X代表任意数
用VB写一个,附源码
Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
For i = 1 To 9
Text1.Text = Text1.Text & Chr(65 + Fix(Rnd() * 10) * 5)
Next
For i = 1 To 10
Select Case i
Case 2
Text2.Text = Text2.Text & 1
Case 5
Text2.Text = Text2.Text & 9
Case 7
Text2.Text = Text2.Text & 9
Case 8
Text2.Text = Text2.Text & 7
Case 10
Text2.Text = Text2.Text & 5
Case Else
Text2.Text = Text2.Text & Fix(Rnd() * 10)
End Select
Next
End Sub
方法很多,我是初学者,望高手给点意见!
上传的附件: