• 标 题:国产软件每日一破(1) (彩票快车V1.07破解记录) (2千字)
  • 作 者:风飘雪
  • 时 间:2001-2-19 21:07:59
  • 链 接:http://bbs.pediy.com

国产软件每日一破(1) (彩票快车V1.07破解记录)
软件名称:彩票快车V1.07 [国产]
来源 2001-02-19 海阔天空502k
软件授权:共享软件
注册费用:28元人民币
软件下载 ftp://ftp.bj.software.chinese.com/software/soft_others/cpkc.zip
软件简介:
  全国各地电脑福利电脑体育彩票最具实力的分析管理投注软件,及时快捷的数据更新!
适用于全国各省、市的各类电脑体育、福利彩票。电脑随机选号的范围可以自行指定。
用后感觉不错,推荐,祝中大奖.
程序不修改Windows注册表的任何内容,没有加壳.

[一]暴力破解
W32DASM金版=>串式参考"您的彩票快车已注册成功,希望多提宝贵意见。谢谢"=>
只有1处,找到后,向上找第一个跳转语句,即(2)处,此为关键跳转.(1)处为关键比较.
:004A8BE0 C1E003                  shl eax, 03
:004A8BE3 2BC2                    sub eax, edx
:004A8BE5 3BD8                    cmp ebx, eax  *********(1)关键比较
:004A8BE7 0F858B010000            jne 004A8D78            (2)关键跳转
            ^^=>84(爆破)          ************
:004A8BED A1947C4B00              mov eax, dword ptr [004B7C94]
:004A8BF2 8B15EC794B00            mov edx, dword ptr [004B79EC]
:004A8BF8 8B12                    mov edx, dword ptr [edx]
:004A8BFA E8B9AFF5FF              call 00403BB8
:004A8BFF 6A01                    push 00000001
* Possible StringData Ref from Code Obj ->"彩票快提示窗口"  (丢掉车字,国产的"质量"!!!)
                                  |
:004A8C01 B9608E4A00              mov ecx, 004A8E60
* Possible StringData Ref from Code Obj ->"您的彩票快车已注册成功,希望多提宝贵意见。谢谢"
                                        ->"!"
                                  |
:004A8C06 BA708E4A00              mov edx, 004A8E70
:004A8C0B A1147C4B00              mov eax, dword ptr [004B7C14]
:004A8C10 8B00                    mov eax, dword ptr [eax]

w32dasm中(2)处底部偏移地址为A7FE7,用ultraedit修改0F85..=>0F84..
改完后再启动,软件注册菜单消失.

[二]追注册码
1.软件注册菜单中填入姓名,电话,电子邮件后,点生成用户码,信息
存在当前目录下lotteryrapido.ini中,我的用户码是16131363
[彩票快车]
姓名=风飘雪
电话=68394831
电子邮件=gd1@yeah.net
用户码=16131363
注册码=
2.试填入注册码,发现注册码必须是8位(可用穷举法,haha!!)
输入11111111
3.启动trw2000,下中断
bpx 4a8be5
go  点注册,被拦
eax
eax=77777777(在哪里,在哪里见过你,你的笑容这麽熟悉)
            想起舒淇和天心MM的电影我爱777
? ebx
ebx=368098003
4.琢磨368098003÷7=52585429
5.填入52585429,点注册,ok,ok!!!

作者 风飘雪
主页 http://duba.126.com
e-mail  gd1@yeah.net

  • 标 题:彩票快车V1.07注册码算法分析: (3千字)
  • 作 者:小 明
  • 时 间:2001-2-20 18:16:00

016F:004A8A80  CALL    00403DE4          取name长度
016F:004A8A85  ADD      EAX,BYTE +0B   加上0B
016F:004A8A88  MOV      ECX,EAX
016F:004A8A8A  SHL      ECX,07
016F:004A8A8D  SUB      ECX,EAX      *7F  设为L
016F:004A8A8F  MOV      EAX,[004B7CF0]
016F:004A8A94  MOV      EAX,[EAX]        取用户码
016F:004A8A96  MOV      EBX,7F
016F:004A8A9B  CDQ   
016F:004A8A9C  IDIV    EBX
016F:004A8A9E  MOV      EDX,EAX      除以7F取余
016F:004A8AA0  SHL      EAX,04
016F:004A8AA3  ADD      EAX,EDX      *11
016F:004A8AA5  XOR      EAX,02EFB69C      XOR 02EFB69C
016F:004A8AAA  CDQ                        \
016F:004A8AAB  XOR      EAX,EDX            > 取绝对值
016F:004A8AAD  SUB      EAX,EDX          /
016F:004A8AAF  ADD      ECX,EAX          与L相加
016F:004A8AB1  MOV      EAX,[004B7CF0]
016F:004A8AB6  MOV      [EAX],ECX        放回用户码处,设为Y
016F:004A8AB8  MOV      EDX,[004B7C08]
016F:004A8ABE  MOV      EDX,[EDX]
016F:004A8AC0  MOV      EAX,[004B7AAC]
016F:004A8AC5  MOV      ECX,004A8E40
016F:004A8ACA  CALL    00403E30          将name与**&%#$@KLhd串起来
016F:004A8ACF  MOV      EAX,[004B7AAC]  如:abc->abc**&%#$@KLhd 设为name'
016F:004A8AD4  MOV      EAX,[EAX]
016F:004A8AD6  CALL    00403DE4          取name'的长度
016F:004A8ADB  MOV      ECX,EAX
016F:004A8ADD  TEST    ECX,ECX
016F:004A8ADF  JNG      004A8B17
016F:004A8AE1  MOV      EBX,01            循环变量
016F:004A8AE6  MOV      EAX,[004B7AAC]  --循环头--
016F:004A8AEB  MOV      EAX,[EAX]
016F:004A8AED  MOVZX    EAX,BYTE [EAX+EBX-01] 取name'的第EBX个字符
016F:004A8AF2  MOV      EDX,[004B7CF0]
016F:004A8AF8  IMUL    DWORD [EDX]    与Y相乘
016F:004A8AFA  ADD      EAX,9F       加上9F
016F:004A8AFF  CDQ   
016F:004A8B00  XOR      EAX,EDX
016F:004A8B02  SUB      EAX,EDX      取绝对值
016F:004A8B04  MOV      EDI,05F5E100
016F:004A8B09  CDQ   
016F:004A8B0A  IDIV    EDI        除以05F5E100
016F:004A8B0C  MOV      EAX,[004B7CF0]
016F:004A8B11  MOV      [EAX],EDX     放入Y
016F:004A8B13  INC      EBX
016F:004A8B14  DEC      ECX        循环次数为name'的长度
016F:004A8B15  JNZ      004A8AE6     --循环尾--
016F:004A8B17  MOV      EAX,[004B7CF0]
016F:004A8B1C  ADD      DWORD [EAX],016676E1 y+016676E1-->Y
016F:004A8B22  MOV      EAX,[004B7AAC]
016F:004A8B27  PUSH    EAX
016F:004A8B28  LEA      EDX,[EBP-10]
016F:004A8B2B  MOV      EAX,[004B7CF0]
016F:004A8B30  MOV      EAX,[EAX]
016F:004A8B32  CALL    00408684      将Y变成10进制的字符串,设为Y'
016F:004A8B37  MOV      EAX,[EBP-10]
016F:004A8B3A  MOV      ECX,08
016F:004A8B3F  MOV      EDX,01
016F:004A8B44  CALL    00403FEC      取Y'的前8位,设为Y"
016F:004A8B49  LEA      EAX,[EBP-04]
016F:004A8B4C  MOV      EDX,004A8E54    这里有一串字符:35217864
016F:004A8B51  CALL    00403BFC
016F:004A8B56  MOV      EAX,[004B7D30]
016F:004A8B5B  CALL    00403B64
016F:004A8B60  MOV      EBX,01       循环变量
016F:004A8B65  LEA      EAX,[EBP-14]    --循环头--
016F:004A8B68  MOV      EDX,[EBP-04]
016F:004A8B6B  MOVZX    EDX,BYTE [EDX+EBX-01]
016F:004A8B70  MOV      ECX,[004B7AAC]
016F:004A8B76  MOV      ECX,[ECX]
016F:004A8B78  MOV      DL,[ECX+EDX-31]     这个循环的作用是:
016F:004A8B7C  CALL    00403D0C        将Y"串作位置上的变换,
016F:004A8B81  MOV      EDX,[EBP-14]      如Y"=12345678,则变换为35217864
016F:004A8B84  MOV      EAX,[004B7D30]     哈哈,变换后的串就是注册码了!
016F:004A8B89  CALL    00403DEC
016F:004A8B8E  MOV      EAX,[004B7D30]
016F:004A8B93  INC      EBX
016F:004A8B94  CMP      EBX,BYTE +09    循环8次
016F:004A8B97  JNZ      004A8B65      --循环尾--
016F:004A8B99  LEA      EDX,[EBP-1C]
016F:004A8B9C  MOV      EAX,[ESI+02FC]

  • 标 题:彩票飞车1.07注册机代码(VB): (1千字)
  • 作 者:小 明
  • 时 间:2001-2-20 19:00:55

'《彩票飞车1.07》算号器,请用VB5以上编译
'说明:Text1为用户名(可用汉字),Text2为用户码,Text3为注册码
'作者:小明 2001.2.20
Dim x, y As Double
Private Sub Text1_Change()
  Text2_Change
End Sub

Private Sub Text2_Change()
  uname = Trim(Text1.Text)
  l = Len(uname)
  x = Val(Text2.Text)
  If l > 0 And Len(Trim(Text2.Text)) = 8 And x > 0 Then
    For i = 1 To l
      If Asc(Mid(uname, i, 1)) < 0 Then l = l + 1
    Next
    x = (x \ 127) * 17 Xor &H2EFB69C
    x = zh(x) + (l + 11) * 127
    uname = uname + "**&%#$@KLhd"
    For i = 1 To Len(uname)
      a = Asc(Mid(uname, i, 1))
      If a < 0 Then
        a = a + 65536
        x = js(x, a \ 256)
        x = js(x, a Mod 256)
      Else
        x = js(x, a)
      End If
    Next
    x = x + &H16676E1
    zcm = Trim(Str(x))
    zzcm = ""
    For i = 1 To 8
      zzcm = zzcm + Mid(zcm, Val(Mid("35217864", i, 1)), 1)
    Next
    Text3.Text = zzcm
  Else
    Text3.Text = ""
  End If
End Sub

Function zh(y)
  y = y - Int(y / 4294967296#) * 4294967296#
  If y >= 2147483648# Then y = 4294967296# - y
  zh = y
End Function

Function js(y, b)
  y = zh(y * b + &H9F)
  y = y - Int(y / &H5F5E100) * &H5F5E100
  js = y
End Function