超级聊天2000
2001C 破解分析
软件名称:
超级聊天2000 2001C
软件简介:
国内的网络速度时快时慢,不稳定是个公认的事实,当你和朋友在网上聊天时,
常常会遇到聊天内容传不过去或速度很慢的情况,这就是网络不稳定的表现之一。
这些不仅影响了聊天的心情,也阻碍了和朋友的交流,甚至多花去了很多上网费,真是令人烦恼。
而超级聊天2000 恰好能较好的解决这些问题。它采用了独特的校验技术,使得无论
在多么不通畅不稳定的网络中,都可将你的聊天内容完整的传给朋友,决无纰漏;速度也快,
没有时差的感觉。功能实用,使用简单,人人都能上手。注册后的版本将能更准确,
更迅速地传递聊天内容;使用也将更方便,更保密。
下载地址:
http://www.onlinedown.net/soft/9195.htm
------------------------------------------------------------
破解作者:
冷枫[OCN][CTR]
破解工具:
w32Dasm ,ollydbg.
破解目的:
学习~~~~~
------------------------------------------------------------
[破解过程]
详细过程:
用户:冷枫[OCN][CTR]
假注册码:52225229
过程:
00477E84 /. 55 PUSH EBP
00477E85 |. 8BEC MOV EBP,ESP
00477E87 |. B9 0D000000 MOV ECX,0D
00477E8C |> 6A 00 /PUSH 0
00477E8E |. 6A 00 |PUSH 0
00477E90 |. 49 |DEC ECX
00477E91 |.^75 F9 \JNZ SHORT UNPACKED.00477E8C
00477E93 |. 51 PUSH ECX
00477E94 |. 53 PUSH EBX
00477E95 |. 8BD8 MOV EBX,EAX
00477E97 |. 33C0 XOR EAX,EAX
00477E99 |. 55 PUSH EBP
00477E9A |. 68 E6824700 PUSH UNPACKED.004782E6
00477E9F |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00477EA2 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00477EA5 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00477EA8 |. BA 00834700 MOV EDX,UNPACKED.00478300
00477EAD |. E8 02BCF8FF CALL UNPACKED.00403AB4
00477EB2 |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
00477EB5 |. A1 B4654900 MOV EAX,DWORD PTR DS:[4965B4]
00477EBA |. 8B00 MOV EAX,DWORD PTR
DS:[EAX]
00477EBC |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00477EBF |. E8 1CB00100 CALL UNPACKED.00492EE0
00477EC4 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
00477EC7 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00477ECA |. E8 E5BBF8FF CALL UNPACKED.00403AB4
00477ECF |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00477ED2 |. 8B83 84030000 MOV EAX,DWORD PTR DS:[EBX+384]
00477ED8 |. E8 A35CFBFF CALL UNPACKED.0042DB80
↑_______取用户位数 OE
00477EDD |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
↑_______将用户位数到EAX
00477EE0 |. E8 B7BDF8FF CALL UNPACKED.00403C9C
↑_______取用户位数 OE
00477EE5 |. 83F8 04 CMP EAX,4
↑_______比较是否大于或等于4 小则OVER
00477EE8 |. 7D 0D JGE SHORT UNPACKED.00477EF7
00477EEA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00477EED |. E8 E28CFDFF CALL UNPACKED.00450BD4
00477EF2 |. E9 1B030000 JMP UNPACKED.00478212
00477EF7 |> 8D55 F0 LEA EDX,DWORD PTR
SS:[EBP-10]
00477EFA |. 8B83 84030000 MOV EAX,DWORD PTR DS:[EBX+384]
00477F00 |. E8 7B5CFBFF CALL UNPACKED.0042DB80
00477F05 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
↑_______取用户位数 OE
00477F08 |. E8 8FBDF8FF CALL UNPACKED.00403C9C
00477F0D |. 83F8 06 CMP EAX,6
↑_______比较是不是大于和等于6
先跟踪大于3而小于6位的注册码我无法跟出,最后选定大于6位的跟踪,问题解决。
[可能由于我技术问题,那位跟出4位用户名的请指点告诉我]
00477F10 JGE UNPACKED.00478050 跳走
↓_______来到这
00478050 LEA EDX,DWORD PTR SS:[EBP-44]
00478053 MOV EAX,DWORD PTR DS:[EBX+388]
00478059 CALL UNPACKED.0042DB80
0047805E MOV EAX,DWORD PTR SS:[EBP-44]
↑_______取输入的注册码
00478061 PUSH EAX
00478062 LEA EDX,DWORD PTR SS:[EBP-4C]
00478065 MOV EAX,DWORD PTR DS:[EBX+384]
0047806B CALL UNPACKED.0042DB80
↑_______用户位数 14
00478070 MOV EDX,DWORD PTR SS:[EBP-4C]
↑_______取用户位数---》EDX
00478073 LEA ECX,DWORD PTR SS:[EBP-48]
00478076 MOV EAX,DWORD PTR DS:[4965B4]
0047807B MOV EAX,DWORD PTR DS:[EAX]
0047807D CALL UNPACKED.00492900 关键算法CALL
-----------------------算法CALL 00492900------------------
00492900 PUSH EBP
00492901 MOV EBP,ESP
00492903 ADD ESP,-1C
00492906 PUSH EBX
00492907 PUSH ESI
00492908 PUSH EDI
00492909 XOR EBX,EBX
↑____//EBX清0X
0049290B MOV DWORD PTR SS:[EBP-10],EBX
0049290E MOV DWORD PTR SS:[EBP-8],ECX
00492911 MOV DWORD PTR SS:[EBP-4],EDX
00492914 MOV EAX,DWORD PTR SS:[EBP-4]
00492917 CALL UNPACKED.00403E50
0049291C XOR EAX,EAX
0049291E PUSH EBP
0049291F PUSH UNPACKED.004929EC
00492924 PUSH DWORD PTR FS:[EAX]
00492927 MOV DWORD PTR FS:[EAX],ESP
0049292A MOV EAX,DWORD PTR SS:[EBP-4]
0049292D CALL UNPACKED.00403C9C
↑____//算用户位数 OE
00492932 CMP EAX,3 比较
00492935 JLE UNPACKED.004929CE
0049293B XOR EDI,EDI
0049293D MOV EAX,DWORD PTR SS:[EBP-4]
00492940 CALL UNPACKED.00403C9C
↑____// 再次算用户位数 OE
00492945 INC EAX
↑____//用户EAX +1 =0f
00492946 TEST EAX,EAX
00492948 JLE SHORT UNPACKED.0049299B
0049294A MOV DWORD PTR SS:[EBP-14],EAX
0049294D MOV DWORD PTR SS:[EBP-C],1
00492954 /MOV EAX,DWORD PTR SS:[EBP-4]
00492957 |CALL UNPACKED.00403C9C
↑____// 再次算用户位数 OE
0049295C |MOV ESI,EAX
↑____//eax===>esi
0049295E |INC ESI
↑____// 用户位数加1 OE+1=0F
0049295F |TEST ESI,ESI
00492961 |JLE SHORT UNPACKED.00492993
00492963 |MOV EBX,1
↑____// 1---》EBX
00492968 |/MOV EAX,DWORD PTR SS:[EBP-4]
0049296B ||CALL UNPACKED.00403C9C
00492970 ||SUB EAX,EBX
↑____//用户位数OE -1 =OB EBX为进行计算的位数
00492972 ||MOV EDX,DWORD PTR SS:[EBP-4]
↑____//取用户存放的内存地址
00492975 ||MOV AL,BYTE PTR DS:[EDX+EAX]
↑____//用户存放的内存地址+用户位数-1=就是从用户最后一位取数
1-----------取 ] (5D)
2-----------取 R (52)
00492978 ||MOV EDX,DWORD PTR SS:[EBP-C]
↑____//[EBP-C] 为大循环的次数 =----》EDX
0049297B ||ADD EDX,EDX
↑____//EDX+EDX=2
0049297D ||LEA EDX,DWORD PTR DS:[EDX+EDX*4]
↑____//[EDX+EDX*4]=2+2*4=0A
00492980 ||IMUL EDX,EDI
↑____//EDX * EDI 第一次EDI为0,
1------------0A * 0 = 0
2------------0A * 5D= 3A2
00492983 ||AND EAX,0FF
↑____//取 ] (5D) AND 0FF 不变
00492988 ||IMUL EAX,EBX
↑____// EAX为取的用户的ASCII,EBX为计算的位数
1-----------] (5D) * 1 =5D----》EAX
2------------取 R (52)* 2 =A4
0049298B ||ADD EDX,EAX
↑____// 0 +5D=5D ----》EDX
2-------- 3A2+A4=446
0049298D ||MOV EDI,EDX
↑____//EDX(5D)---》EDI
2---------446---》EDI
0049298F ||INC EBX
↑____//EBX为以计算的位数, EBX+1,去进行下个计算
00492990 ||DEC ESI
↑____// ESI 为需要计算的位数,ESI-1,表示还剩下多少没计算
00492991 |\JNZ SHORT UNPACKED.00492968
↑____// 比较是否计算完 小循环 OF(16) 次
//第一次计算完后为 E0AAE680 (3769296512)---》EDI
// 计算完为一次大循环
00492993 |INC DWORD PTR SS:[EBP-C]
↑____//表示大循环的次数
00492996 |DEC DWORD PTR SS:[EBP-14]
↑____//表示还要大循环的次数 用户位数加1 0F(16)
00492999 \JNZ SHORT UNPACKED.00492954
↑____// 比较是否计算完 循环 OF(16)
次
//计算完后为 109D02C0(278725312)---》EDI
10进制为真注册码
0049299B LEA EAX,DWORD PTR SS:[EBP-10]
----------------------------算法完---------------------
00478082 MOV EDX,DWORD PTR SS:[EBP-48]
↑_______将真注册码 -----》EDX
00478085 POP EAX
00478086 CALL UNPACKED.00403DAC 比较~~~~~
0047808B JNZ UNPACKED.
最后得:
用户:冷枫[OCN][CTR]
注册码:278725312
写的不好的地方,还希望各位看观指出~~~~~~
------------------------------------------------------------
~~~~~~~~~~~~~相信自己,哦哦哦哦~~~~~~~~~~~~~