首页
社区
课程
招聘
[讨论]某软件的注册码算法
发表于: 2009-1-12 14:32 3830

[讨论]某软件的注册码算法

2009-1-12 14:32
3830
【文章标题】: 某软件的注册码算法
【文章作者】: 柳州小林
【作者邮箱】: 2130292@163.com
【作者主页】: 无
【作者QQ号】: 55713720
【软件名称】: XX制作大师8.0
【软件大小】: 5,193,627 字节
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 不知道
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD,PEiD
【操作平台】: XPSP2
【软件介绍】: http://www.dapengsoft.com.cn/files/seal80.zip
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  原来硬盘里是7.0的,加有UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo的壳,
  本来想是练习脱壳的,谁知道搞来搞去EXE被我搞坏了:(,可惜网上已经没有7.0了,只能下8.0来试试。
  用PEiD打开没有加壳。晕!看来只能玩算法了。
  1、软件注册错误后显示“错误的注册码!”我用“超级字串参考”找到这里
  00624860    6A 00           PUSH 0
  00624862    66:8B0D C449620>MOV CX,WORD PTR DS:[6249C4]
  00624869    B2 02           MOV DL,2
  0062486B    B8 D0496200     MOV EAX,Comdata.006249D0                 ;  谢谢您:软件已成功注册!
  00624870    E8 BB43FAFF     CALL Comdata.005C8C30
  00624875    C645 FF 01      MOV BYTE PTR SS:[EBP-1],1
  00624879    EB 15           JMP SHORT Comdata.00624890
  0062487B    6A 00           PUSH 0
  0062487D    66:8B0D C449620>MOV CX,WORD PTR DS:[6249C4]
  00624884    33D2            XOR EDX,EDX
  00624886    B8 F4496200     MOV EAX,Comdata.006249F4                 ; 错误的注册码!
  0062488B    E8 A043FAFF     CALL Comdata.005C8C30
  
  向上看来到这里,下断,我是看椎栈和寄存器的值一步一步跟,自己写的注释。
  0062474B    8D55 E4         LEA EDX,DWORD PTR SS:[EBP-1C]
  0062474E    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  00624751    8B80 04030000   MOV EAX,DWORD PTR DS:[EAX+304]
  00624757    E8 A0A7FBFF     CALL Comdata.005DEEFC                    ; 取第一组注册码
  0062475C    FF75 E4         PUSH DWORD PTR SS:[EBP-1C]
  0062475F    8D55 E0         LEA EDX,DWORD PTR SS:[EBP-20]
  00624762    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  00624765    8B80 0C030000   MOV EAX,DWORD PTR DS:[EAX+30C]
  0062476B    E8 8CA7FBFF     CALL Comdata.005DEEFC                    ; 取第一组注册码
  00624770    FF75 E0         PUSH DWORD PTR SS:[EBP-20]
  00624773    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-24]
  00624776    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  00624779    8B80 14030000   MOV EAX,DWORD PTR DS:[EAX+314]
  0062477F    E8 78A7FBFF     CALL Comdata.005DEEFC                    ; 取第一组注册码
  00624784    FF75 DC         PUSH DWORD PTR SS:[EBP-24]
  00624787    8D55 D8         LEA EDX,DWORD PTR SS:[EBP-28]
  0062478A    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  0062478D    8B80 1C030000   MOV EAX,DWORD PTR DS:[EAX+31C]
  00624793    E8 64A7FBFF     CALL Comdata.005DEEFC                    ; 取第一组注册码
  00624798    FF75 D8         PUSH DWORD PTR SS:[EBP-28]
  0062479B    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
  0062479E    BA 04000000     MOV EDX,4
  006247A3    E8 58FBF7FF     CALL Comdata.005A4300
  006247A8    8D4D D4         LEA ECX,DWORD PTR SS:[EBP-2C]
  006247AB    66:BA EF0C      MOV DX,0CEF
  006247AF    B8 40496200     MOV EAX,Comdata.00624940                 ; sealwinxp
  006247B4    E8 E7C0FDFF     CALL Comdata.006008A0
  006247B9    8B55 D4         MOV EDX,DWORD PTR SS:[EBP-2C]
  006247BC    8D4D F4         LEA ECX,DWORD PTR SS:[EBP-C]
  006247BF    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]             ; 取注册码
  006247C2 >  E8 75C0FDFF     CALL Comdata.0060083C                    ; 算法核心
  006247C7    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  006247CA    E8 71FAF7FF     CALL Comdata.005A4240                    ; 取注册码长度
  006247CF >  83F8 14         CMP EAX,14                               ; 校验注册码长度
  006247D2    0F85 A3000000   JNZ Comdata.0062487B
  006247D8    8D45 D0         LEA EAX,DWORD PTR SS:[EBP-30]
  006247DB    E8 90C1FDFF     CALL Comdata.00600970
  006247E0    8B55 D0         MOV EDX,DWORD PTR SS:[EBP-30]
  006247E3    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  006247E6    E8 A1FBF7FF     CALL Comdata.005A438C                    ; 校验机器码是否被改动
  006247EB    0F85 8A000000   JNZ Comdata.0062487B
  006247F1    8D45 CC         LEA EAX,DWORD PTR SS:[EBP-34]
  006247F4    E8 77C1FDFF     CALL Comdata.00600970
  006247F9    8B45 CC         MOV EAX,DWORD PTR SS:[EBP-34]
  006247FC    E8 3FFAF7FF     CALL Comdata.005A4240
  00624801    83F8 08         CMP EAX,8
  00624804    75 75           JNZ SHORT Comdata.0062487B
  00624806    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]             ; 取注册码
  00624809    50              PUSH EAX
  0062480A    B9 54496200     MOV ECX,Comdata.00624954                 ; regsn
  0062480F    BA 64496200     MOV EDX,Comdata.00624964                 ; software\大鹏软件\印章制作   \userinfo
  00624814    B8 02000080     MOV EAX,80000002
  00624819    E8 46BFFDFF     CALL Comdata.00600764                    ; 写入注册表
  0062481E    8D55 C8         LEA EDX,DWORD PTR SS:[EBP-38]
  00624821    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  00624824    8B80 28030000   MOV EAX,DWORD PTR DS:[EAX+328]
  0062482A    E8 CDA6FBFF     CALL Comdata.005DEEFC
  0062482F    8B45 C8         MOV EAX,DWORD PTR SS:[EBP-38]
  00624832    50              PUSH EAX
  00624833    B9 94496200     MOV ECX,Comdata.00624994                 ; regusername
  00624838    BA 64496200     MOV EDX,Comdata.00624964                 ; software\大鹏软件\印章制作   \userinfo
  0062483D    B8 02000080     MOV EAX,80000002
  00624842    E8 1DBFFDFF     CALL Comdata.00600764
  00624847    68 A8496200     PUSH Comdata.006249A8                    ; registed
  0062484C    B9 BC496200     MOV ECX,Comdata.006249BC                 ; reginfo
  00624851    BA 64496200     MOV EDX,Comdata.00624964                 ; software\大鹏软件\印章制作   \userinfo
  00624856    B8 02000080     MOV EAX,80000002
  0062485B    E8 04BFFDFF     CALL Comdata.00600764
  00624860    6A 00           PUSH 0
  00624862    66:8B0D C449620>MOV CX,WORD PTR DS:[6249C4]
  00624869    B2 02           MOV DL,2
  0062486B    B8 D0496200     MOV EAX,Comdata.006249D0                 ;  谢谢您:软件已成功注册!
  00624870    E8 BB43FAFF     CALL Comdata.005C8C30
  00624875    C645 FF 01      MOV BYTE PTR SS:[EBP-1],1
  00624879    EB 15           JMP SHORT Comdata.00624890
  0062487B    6A 00           PUSH 0
  0062487D    66:8B0D C449620>MOV CX,WORD PTR DS:[6249C4]
  00624884    33D2            XOR EDX,EDX
  00624886    B8 F4496200     MOV EAX,Comdata.006249F4                 ; 错误的注册码!
  0062488B    E8 A043FAFF     CALL Comdata.005C8C30
  
  从算法进入到这里,这里可能会有乱码,用CTRL+A试试,不行就“右键-》分析-》从代码中删除”
  一步一步跟踪椎栈和寄存器的值后得出注册码的算法。
  
  0060084D    8A22            MOV AH,BYTE PTR DS:[EDX]                 ; 取注册码第1组第一个
  0060084F    8A42 05         MOV AL,BYTE PTR DS:[EDX+5]               ; 取注册码第2组第一个
  00600852    C1E0 10         SHL EAX,10
  00600855    8A62 0A         MOV AH,BYTE PTR DS:[EDX+A]               ; 取注册码第3组第一个
  00600858    8A42 0F         MOV AL,BYTE PTR DS:[EDX+F]               ; 取注册码第4组第一个
  0060085B    3D 6570756C     CMP EAX,6C757065                         ;这句原来是乱码
  00600860    75 71           JNZ SHORT Comdata.006008D3
  00600862    8A62 13         MOV AH,BYTE PTR DS:[EDX+13]              ; 取注册码第4组第5个
  00600865    8A42 0E         MOV AL,BYTE PTR DS:[EDX+E]               ; 取注册码第3组第5个
  00600868    C1E0 10         SHL EAX,10
  0060086B    8A62 09         MOV AH,BYTE PTR DS:[EDX+9]               ; 取注册码第2组第5个
  0060086E    8A42 04         MOV AL,BYTE PTR DS:[EDX+4]               ; 取注册码第1组第5个
  00600871    59              POP ECX
  00600872    36:8B11         MOV EDX,DWORD PTR SS:[ECX]
  00600875    8B52 04         MOV EDX,DWORD PTR DS:[EDX+4]
  00600878    3BC2            CMP EAX,EDX
  0060087A    74 13           JE SHORT Comdata.0060088F
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  算法:
  机器码:ABCDEFGH
  注册码:aaaaa-bbbbb-ccccc-ddddd
  以上为机器码和注册码形式。
  注册码各组第1位已经固定(CMP EAX,6C757065)
  laaaa-ubbbb-pcccc-edddd
  注册码各组第5位分别为机器码后四位。
  laaaE-ubbbF-pcccG-edddH
  注册码各组第2-4位为任意字符。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年01月12日 14:32:13

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
专破国产?
2009-1-12 16:14
0
雪    币: 1596
活跃值: (30)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
本来只是想学学脱壳的
且这个软件在网上满是绿色版
E文差国外又找不到好的软件下载的网站,版主给个国外下载软件的网址吧
2009-1-13 10:54
0
游客
登录 | 注册 方可回帖
返回
//