飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2500|回复: 6

[申请破文] clipboard box 3.3算法分析

[复制链接]

该用户从未签到

发表于 2006-9-1 14:37:48 | 显示全部楼层 |阅读模式
【软件名称】: Clipboard Box 3.3
【软件大小】: 752K
【下载地址】: http://ha.newhua.com/down/clipboardbox.zip
【运行环境】:Win9x/Me/NT/2000/XP/2003
【加壳方式】: N
【发布时间】:2006-8-29 16:16:46
【作者声明】: 因为小弟不擅长算法,所以野猫III兄特别推荐这个简单的软件给小弟练习算法分析!如果有什么不对的地方,希望大家批评指正!谢谢!
--------------------------------------------------------------------------------
【详细过程】
软件介绍:
  是一款拓展Windows自带的剪贴板功能,可以保存多达50次的剪贴板信息。为您节省时间,提高生产力。人人都需要Clipboard Box的帮助,特别是程序员和办公室文员。Windows的剪贴板只能保存一次信息,而Clipboard Box可以保存50次以供复制和粘贴。
  
  先运行软件看看情况,一启动要求输入用户名和注册码,随便填入后,提示:Invalid Registrstion
  OD载入,查找“Invalid Registrstion”,来到下面:
  004A7336  |. /75 68         JNZ SHORT clipboar.004A73A0    !是从这里跳到出错信息处的!
  004A7338  |. |B2 01         MOV DL,1
  004A733A  |. |A1 10684300   MOV EAX,DWORD PTR DS:[436810]
  004A733F  |. |E8 CCF5F8FF   CALL clipboar.00436910
  004A7344  |. |8BD8          MOV EBX,EAX
  004A7346  |. |BA 00000080   MOV EDX,80000000
  004A734B  |. |8BC3          MOV EAX,EBX
  004A734D  |. |E8 5EF6F8FF   CALL clipboar.004369B0
  004A7352  |. |B1 01         MOV CL,1
  004A7354  |. |BA 08744A00   MOV EDX,clipboar.004A7408                ;  ASCII ".lwx1"
  004A7359  |. |8BC3          MOV EAX,EBX
  004A735B  |. |E8 B4F6F8FF   CALL clipboar.00436A14
  004A7360  |. |84C0          TEST AL,AL
  004A7362  |. |74 11         JE SHORT clipboar.004A7375
  004A7364  |. |B9 18744A00   MOV ECX,clipboar.004A7418                ;  ASCII "!oncemoreagain"
  004A7369  |. |BA 30744A00   MOV EDX,clipboar.004A7430                ;  ASCII "registerok"
  004A736E  |. |8BC3          MOV EAX,EBX
  004A7370  |. |E8 5BF8F8FF   CALL clipboar.00436BD0
  004A7375  |> |6A 00         PUSH 0
  004A7377  |. |B9 3C744A00   MOV ECX,clipboar.004A743C                ;  ASCII "Registerd OK"
  004A737C  |. |BA 4C744A00   MOV EDX,clipboar.004A744C                ;  ASCII "Registerd OK,Enjoy it!"
  004A7381  |. |A1 5CCB4A00   MOV EAX,DWORD PTR DS:[4ACB5C]
  004A7386  |. |8B00          MOV EAX,DWORD PTR DS:[EAX]
  004A7388  |. |E8 CF02FBFF   CALL clipboar.0045765C
  004A738D  |. |A1 B0DD4A00   MOV EAX,DWORD PTR DS:[4ADDB0]
  004A7392  |. |E8 7DC9FAFF   CALL clipboar.00453D14
  004A7397  |. |8BC3          MOV EAX,EBX
  004A7399  |. |E8 16C8F5FF   CALL clipboar.00403BB4
  004A739E  |. |EB 18         JMP SHORT clipboar.004A73B8
  004A73A0  |> \6A 00         PUSH 0
  004A73A2  |.  B9 64744A00   MOV ECX,clipboar.004A7464                ;  ASCII "Warning"
  004A73A7  |.  BA 6C744A00   MOV EDX,clipboar.004A746C                ;  ASCII "Invalid registration!!"  <---来到这里!
  
  004A737A是从004A7336  |. /75 68         JNZ SHORT clipboar.004A73A0  跳过来的,所以上面应该是进行判断的地方!
  往上面看,发现这段代码应该是一个call,起始位置在004A7268那里,于是,在004A7268处下断,F9运行,输入假注册信息后,点Register,被断下了,OD里面单步跟踪,
  004A7268  /.  55            PUSH EBP                停在这里!
  004A7269  |.  8BEC          MOV EBP,ESP
  004A726B  |.  33C9          XOR ECX,ECX         
  004A726D  |.  51            PUSH ECX
  004A726E  |.  51            PUSH ECX
  004A726F  |.  51            PUSH ECX
  004A7270  |.  51            PUSH ECX
  004A7271  |.  51            PUSH ECX
  004A7272  |.  51            PUSH ECX
  004A7273  |.  51            PUSH ECX
  004A7274  |.  51            PUSH ECX
  004A7275  |.  53            PUSH EBX
  004A7276  |.  56            PUSH ESI
  004A7277  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
  004A727A  |.  33C0          XOR EAX,EAX
  004A727C  |.  55            PUSH EBP
  004A727D  |.  68 E3734A00   PUSH clipboar.004A73E3
  004A7282  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  004A7285  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  004A7288  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            
  004A728B  |.  BA F8734A00   MOV EDX,clipboar.004A73F8                ;  给EDX赋值为 "820709"(820709是进行计算的基本码)
  004A7290  |.  E8 27D7F5FF   CALL clipboar.004049BC
  004A7295  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
  004A7298  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004A729B  |.  8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
  004A72A1  |.  E8 2AF1FBFF   CALL clipboar.004663D0
  004A72A6  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  把注册名放到EAX
  004A72A9  |.  E8 36D9F5FF   CALL clipboar.00404BE4                      计算注册名的字符数目,返回到EAX
  004A72AE  |.  8BD8          MOV EBX,EAX                                 把EAX的值赋给EBX
  004A72B0  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
  004A72B3  |.  B8 6D000000   MOV EAX,6D
  004A72B8  |.  E8 E31CF6FF   CALL clipboar.00408FA0                      清空EDX        ?
  004A72BD  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]               给EDX赋值为109(第二个基本码109)
  004A72C0  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]            ;  
  004A72C3  |.  E8 24D9F5FF   CALL clipboar.00404BEC                      将2个基本码合并为"820709109"
  004A72C8  |.  83FB 07       CMP EBX,7                                           比较注册名的位数
  004A72CB  |.  7C 05         JL SHORT clipboar.004A72D2                   不足7位直接继续
  004A72CD  |.  BB 07000000   MOV EBX,7                                       超过7位则只取前7位
  004A72D2  |>  8BF3          MOV ESI,EBX
  004A72D4  |.  85F6          TEST ESI,ESI
  004A72D6  |.  7E 42         JLE SHORT clipboar.004A731A
  004A72D8  |.  C745 F4 01000>MOV DWORD PTR SS:[EBP-C],1
  004A72DF  |>  8D45 E8       /LEA EAX,DWORD PTR SS:[EBP-18]           从这里开始的一个循环(004A72DF到004A7318)是根据输入的注册名进行计算
  004A72E2  |.  50            |PUSH EAX
  004A72E3  |.  B9 01000000   |MOV ECX,1
  004A72E8  |.  8B55 F4       |MOV EDX,DWORD PTR SS:[EBP-C]
  004A72EB  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]            将注册名送到EAX
  004A72EE  |.  E8 51DBF5FF   |CALL clipboar.00404E44                  将注册名长度送到EBX
  004A72F3  |.  8B45 E8       |MOV EAX,DWORD PTR SS:[EBP-18]
  004A72F6  |.  E8 E9DAF5FF   |CALL clipboar.00404DE4
  004A72FB  |.  8A18          |MOV BL,BYTE PTR DS:[EAX]
  004A72FD  |.  8D55 E4       |LEA EDX,DWORD PTR SS:[EBP-1C]
  004A7300  |.  33C0          |XOR EAX,EAX
  004A7302  |.  8AC3          |MOV AL,BL
  004A7304  |.  E8 971CF6FF   |CALL clipboar.00408FA0                     取得第一个字符的ascii码
  004A7309  |.  8B55 E4       |MOV EDX,DWORD PTR SS:[EBP-1C]           ;  将得到的码值送到EDX
  004A730C  |.  8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]           ;  
  004A730F  |.  E8 D8D8F5FF   |CALL clipboar.00404BEC                   将已经得到的ascii码值加到基本码"820709109"后面,同时把长度值送到ESI,用ESI作计数器
  004A7314  |.  FF45 F4       |INC DWORD PTR SS:[EBP-C]
  004A7317  |.  4E            |DEC ESI                                  ESI值-1
  004A7318  |.^ 75 C5         \JNZ SHORT clipboar.004A72DF              跳到循环起始处(004A72DF),对下一个字符求其ascii码
  004A731A  |>  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
  004A731D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  004A7320  |.  8B80 0C030000 MOV EAX,DWORD PTR DS:[EAX+30C]
  004A7326  |.  E8 A5F0FBFF   CALL clipboar.004663D0
  004A732B  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]             把输入的注册码送到EAX
  004A732E  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]             把计算出来的注册码送到EDX
  004A7331  |.  E8 FAD9F5FF   CALL clipboar.00404D30                    将2个注册码进行比较
  004A7336  |. /75 68         JNZ SHORT clipboar.004A73A0               如果不相等就跳到出错的地方,相等就继续往下,弹出注册成功的对话框!
  
  小结:
  这个软件的注册码计算方法是:将取得的注册名按字符从左到右逐一取出求其相应的ASCII码值,然后加到基本码("820709109")的后面即可。
  
  接着写注册机,我只会VB,
  打开vb,添加2个文本框用来输入注册名和显示注册码!
  代码如下:
  Private Sub Txtname_Change()
  Dim cd%, na$, ls$, i%
  na = Mid$(Txtname.Text, 1, 7)
  cd = Len(na)
  If cd <> 0 Then
      For i = 1 To cd
          ls = ls & Asc(Mid$(na, i, 1))
      Next
      ls = "820709109" & ls
      Txtkeycode.Text = ls
  Else
      Txtkeycode.Text = ""
  End If
  End Sub

   
  生成exe文件,输入用户名:jjdg,得到注册码:820709109106106100103
                      输入用户名:jjdgjjdg,得到注册码:820709109106106100103106106100
  试试,注册成功!


                                                      修改于 2006年10月12日 16:08:35

[ 本帖最后由 jjdg 于 2006-10-12 16:48 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-9-1 15:29:35 | 显示全部楼层
    JJDG兄弟果然不负猫所望,这么快就分析出来了。。。

    第一个来支持!:victory:

    再接再励!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-1 15:29:38 | 显示全部楼层
    支持!!!共同进步
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-1 22:28:53 | 显示全部楼层
    支持~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-14 09:05
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2006-9-3 14:11:28 | 显示全部楼层
    先下载保存,然后慢慢学习!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-10-12 14:11:01 | 显示全部楼层
    呵呵,很值得学习的文章啊~~~

    [ 本帖最后由 网游难民 于 2006-10-15 09:21 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-10-12 16:14:13 | 显示全部楼层
    问题已经解决!
    抱歉!我一直都用jjdg做验证,没有用过长注册名,所以...以后会用长注册名验证!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表