- UID
- 2986
注册时间2005-9-3
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
【破文标题】 《七星彩分析系统》算法分析+注册机
【使用工具】 PEiD,Ollydbg1.10,WinXP
【破文作者】 N-klen[BCG]
【软件名称】 七星彩分析系统v3.0
【软件大小】 5.0M
【下载地址】 http://nj.onlinedown.net/soft/34651.htm
【破解声明】 我的第三篇文章~只有菜鸟级的水平~有错的地方请多多指点!
【软件简介】 界面综合了市场上各种彩票工具的优点,Borland Delphi 7.0编译
【注册方法】 计算后的注册码和软件码比较
【破解过程】
Ollydbg1.10载入----Ultra String Reference/Find ASCII
Text String=注册号码错误,请联系[email protected]获得注册号码,申请号码是
Follow!
是从一个跳转跳来的!
- 00585C23 E8 84420200 call 七星彩分.005A9EAC ; 取机器码
- 00585C28 8BD0 mov edx,eax
- 00585C2A 8D45 FC lea eax,dword ptr ss:[ebp-4]
- 00585C2D E8 1AEEE7FF call 七星彩分.00404A4C ; 取时间
- 00585C32 8D55 F4 lea edx,dword ptr ss:[ebp-C]
- 00585C35 8B45 FC mov eax,dword ptr ss:[ebp-4]
- 00585C38 E8 BF37E8FF call 七星彩分.004093FC
- 00585C3D 8B55 F4 mov edx,dword ptr ss:[ebp-C]
- 00585C40 8D45 FC lea eax,dword ptr ss:[ebp-4]
- 00585C43 E8 ACECE7FF call 七星彩分.004048F4
- 00585C48 8D55 F0 lea edx,dword ptr ss:[ebp-10]
- 00585C4B 8B86 F8020000 mov eax,dword ptr ds:[esi+2F8]
- 00585C51 E8 C6BFECFF call 七星彩分.00451C1C ; 取输入的注册码
- 00585C56 8B45 F0 mov eax,dword ptr ss:[ebp-10]
- 00585C59 E8 B6EEE7FF call 七星彩分.00404B14 ; 取假码长度
- 00585C5E 8BF8 mov edi,eax
- 00585C60 85FF test edi,edi ; 检查是否有效
- 00585C62 7E 38 jle short 七星彩分.00585C9C
- 00585C64 BB 01000000 mov ebx,1
- 00585C69 8D55 E8 lea edx,dword ptr ss:[ebp-18] ; 循环开始
- 00585C6C 8B86 F8020000 mov eax,dword ptr ds:[esi+2F8]
- 00585C72 E8 A5BFECFF call 七星彩分.00451C1C ; 取输入的注册码
- 00585C77 8B45 E8 mov eax,dword ptr ss:[ebp-18]
- 00585C7A 33D2 xor edx,edx
- 00585C7C 8A5418 FF mov dl,byte ptr ds:[eax+ebx-1] ; 按顺序取
- 00585C80 2BD3 sub edx,ebx ; 假码ASCII-当前是第几次
- 00585C82 83EA 02 sub edx,2 ; 假码ASCII-2
- 00585C85 8D45 EC lea eax,dword ptr ss:[ebp-14]
- 00585C88 E8 AFEDE7FF call 七星彩分.00404A3C ; 计算后的ASCII码放到edx
- 00585C8D 8B55 EC mov edx,dword ptr ss:[ebp-14]
- 00585C90 8D45 F8 lea eax,dword ptr ss:[ebp-8]
- 00585C93 E8 84EEE7FF call 七星彩分.00404B1C ; 保存到堆栈
- 00585C98 43 inc ebx ; 累加
- 00585C99 4F dec edi ; 长度累减
- 00585C9A ^ 75 CD jnz short 七星彩分.00585C69 ; 循环
- 00585C9C 8B45 FC mov eax,dword ptr ss:[ebp-4] ; eax装机器码
- 00585C9F 8B55 F8 mov edx,dword ptr ss:[ebp-8] ; edx装计算后的机器码
- 00585CA2 E8 B1EFE7FF call 七星彩分.00404C58 ; 关键比较CALL
- 00585CA7 0F85 24010000 jnz 七星彩分.00585DD1 ; 关键跳一跳就挂!
- 00585CAD 8D55 E4 lea edx,dword ptr ss:[ebp-1C]
- 00585CB0 8B86 00030000 mov eax,dword ptr ds:[esi+300]
- 00585CB6 E8 61BFECFF call 七星彩分.00451C1C ; 成功画面
- 跟入
- 00585CA2 E8 B1EFE7FF call 七星彩分.00404C58 ; 关键比较CALL
- ...
- 00404C58 53 push ebx
- 00404C59 56 push esi
- 00404C5A 57 push edi
- 00404C5B 89C6 mov esi,eax ; 机器码放入esi
- 00404C5D 89D7 mov edi,edx ; 计算后的注册码放到edi
- 00404C5F 39D0 cmp eax,edx ; 比较
- 00404C61 0F84 8F000000 je 七星彩分.00404CF6 ; 相等则跳
- 00404C67 85F6 test esi,esi
- 00404C69 74 68 je short 七星彩分.00404CD3
- 00404C6B 85FF test edi,edi
- 00404C6D 74 6B je short 七星彩分.00404CDA
- 00404C6F 8B46 FC mov eax,dword ptr ds:[esi-4] ; eax放机器码长度
- 00404C72 8B57 FC mov edx,dword ptr ds:[edi-4] ; edx放计算后注册码长度
- 00404C75 29D0 sub eax,edx ; 比较一下长度
- 00404C77 77 02 ja short 七星彩分.00404C7B
- 00404C79 01C2 add edx,eax ; 使两码等长
- 00404C7B 52 push edx
- 00404C7C C1EA 02 shr edx,2 ; 长度/4
- 00404C7F 74 26 je short 七星彩分.00404CA7
- 00404C81 8B0E mov ecx,dword ptr ds:[esi] ; 机器码前4位倒放入ecx
- 00404C83 8B1F mov ebx,dword ptr ds:[edi] ; 计算后的注册码前4位倒放入ebx
- 00404C85 39D9 cmp ecx,ebx ; 比较一下
- 00404C87 75 58 jnz short 七星彩分.00404CE1 ; 不等则跳走!
- 00404C89 4A dec edx
- 00404C8A 74 15 je short 七星彩分.00404CA1 ; 比完则跳
- 00404C8C 8B4E 04 mov ecx,dword ptr ds:[esi+4] ; 机器码中间4位倒放到ecx
- 00404C8F 8B5F 04 mov ebx,dword ptr ds:[edi+4] ; 计算后的注册码中间4位放到ebx
- 00404C92 39D9 cmp ecx,ebx ; 比较
- 00404C94 75 4B jnz short 七星彩分.00404CE1 ; 不等则跳走!
- 00404C96 83C6 08 add esi,8 ; 取机器码后4位
- 00404C99 83C7 08 add edi,8 ; 取算后注册码的后4位
- 00404C9C 4A dec edx
- 00404C9D ^ 75 E2 jnz short 七星彩分.00404C81 ; 跳回比较,就是循环取4位ascii码
- 00404C9F EB 06 jmp short 七星彩分.00404CA7
- 00404CA1 83C6 04 add esi,4
- ...
复制代码
【破解总结】 算法不复杂,但做注册机要逆运算.也很简单.
注册码第一位ASCII=ASCII机器码+1+2
注册码第二位ASCII=ASCII机器码+2+2
注册码第三位ASCII=ASCII机器码+3+2
注册码第四位ASCII=ASCII机器码+4+2
...
..
..
【写注册机】 用VB实现,如下
放两个text,一个command
Private Sub Command1_Click()
Dim a, b, c, d, e
a = Text1.Text
b = Len(a)
c = 1
Do
d = Mid(a, c, 1)
d = Asc(d) + 2 + c
d = String(1, d)
e = e & d
c = c + 1
Loop While c <= b
Text2.Text = e
End Sub |
|