首页
社区
课程
招聘
[旧帖] [原创]一款软件的注册分析! 0.00雪花
发表于: 2009-6-27 15:22 2757

[旧帖] [原创]一款软件的注册分析! 0.00雪花

2009-6-27 15:22
2757
这是一款改变桌面壁纸的软件,没注册有功能限制。
破解只为研究。
软件界面做的很美观,很不错。现在我都喜欢直接查找字符串,而不是下断MessageBox,果然找到了如下的代码:
004D38D2  |.  E8 ADE4FFFF   CALL wrmain.004D1D84
004D38D7  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004D38DA  |.  8B80 68030000 MOV EAX,DWORD PTR DS:[EAX+368]
004D38E0  |.  BA B8394D00   MOV EDX,wrmain.004D39B8                  ; 已注册...
004D38E5  |.  E8 FEDAF6FF   CALL wrmain.004413E8
004D38EA  |.  EB 55         JMP SHORT wrmain.004D3941
004D38EC  |>  6A 00         PUSH 0
004D38EE  |.  A1 EC754D00   MOV EAX,DWORD PTR DS:[4D75EC]
004D38F3  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D38F5  |.  E8 8E14F3FF   CALL wrmain.00404D88
004D38FA  |.  8BC8          MOV ECX,EAX
004D38FC  |.  BA D8394D00   MOV EDX,wrmain.004D39D8                  ;  注册码不正确, 请查实.
004D3901  |.  A1 D0784D00   MOV EAX,DWORD PTR DS:[4D78D0]
004D3906  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D3908  |.  E8 2FDCF8FF   CALL wrmain.0046153C
004D390D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004D3910  |.  8B80 68030000 MOV EAX,DWORD PTR DS:[EAX+368]
004D3916  |.  8B10          MOV EDX,DWORD PTR DS:[EAX]
004D3918  |.  FF92 C0000000 CALL DWORD PTR DS:[EDX+C0]
004D391E  |.  EB 21         JMP SHORT wrmain.004D3941
004D3920  |>  6A 00         PUSH 0
004D3922  |.  A1 EC754D00   MOV EAX,DWORD PTR DS:[4D75EC]
004D3927  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D3929  |.  E8 5A14F3FF   CALL wrmain.00404D88
004D392E  |.  8BC8          MOV ECX,EAX
004D3930  |.  BA D8394D00   MOV EDX,wrmain.004D39D8                  ;  注册码不正确, 请查实.
004D3935  |.  A1 D0784D00   MOV EAX,DWORD PTR DS:[4D78D0]
004D393A  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D393C  |.  E8 FBDBF8FF   CALL wrmain.0046153C
004D3941  |>  33C0          XOR EAX,EAX
004D3943  |.  5A            POP EDX
004D3944  |.  59            POP ECX
004D3945  |.  59            POP ECX

在这段代码向上,就看到下面的代码,看注释:

004D36E9  |.  53            PUSH EBX
004D36EA  |.  56            PUSH ESI
004D36EB  |.  57            PUSH EDI
004D36EC  |.  33C9          XOR ECX,ECX
004D36EE  |.  898D F0FEFFFF MOV DWORD PTR SS:[EBP-110],ECX
004D36F4  |.  898D ECFEFFFF MOV DWORD PTR SS:[EBP-114],ECX
004D36FA  |.  898D E8FEFFFF MOV DWORD PTR SS:[EBP-118],ECX
004D3700  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
004D3703  |.  894D F8       MOV DWORD PTR SS:[EBP-8],ECX
004D3706  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
004D3709  |.  33C0          XOR EAX,EAX
004D370B  |.  55            PUSH EBP
004D370C  |.  68 6F394D00   PUSH wrmain.004D396F
004D3711  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
004D3714  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
004D3717  |.  66:BE 4F04    MOV SI,44F                       ;注册算法中要用到
004D371B  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
004D371E  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004D3721  |.  8B80 68030000 MOV EAX,DWORD PTR DS:[EAX+368]
004D3727  |.  E8 8CDCF6FF   CALL wrmain.004413B8
004D372C  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
004D372F  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
004D3732  |.  E8 B956F3FF   CALL wrmain.00408DF0
004D3737  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D373A  |.  E8 35E7FFFF   CALL wrmain.004D1E74
004D373F  |.  84C0          TEST AL,AL
004D3741  |.  74 08         JE SHORT wrmain.004D374B
004D3743  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
004D3746  |.  E8 8D11F3FF   CALL wrmain.004048D8
004D374B  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D374E  |.  E8 3D14F3FF   CALL wrmain.00404B90              ;取注册码长度
004D3753  |.  83F8 0B       CMP EAX,0B                        ;必须大于11
004D3756  |.  0F8E C4010000 JLE wrmain.004D3920
004D375C  |.  33DB          XOR EBX,EBX
004D375E  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D3761  |.  E8 2A14F3FF   CALL wrmain.00404B90
004D3766  |.  8BD0          MOV EDX,EAX
004D3768  |.  85D2          TEST EDX,EDX
004D376A  |.  7E 25         JLE SHORT wrmain.004D3791
004D376C  |.  B8 01000000   MOV EAX,1                          ;以下为注册算法
004D3771  |>  8B4D F8       /MOV ECX,DWORD PTR SS:[EBP-8]      ;ecx为假注册码
004D3774  |.  0FB64C01 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EAX-1]
004D3779  |.  0FB7FE        |MOVZX EDI,SI                      ;si为44F
004D377C  |.  C1EF 08       |SHR EDI,8
004D377F  |.  33CF          |XOR ECX,EDI
004D3781  |.  BF 12000000   |MOV EDI,12
004D3786  |.  2BF8          |SUB EDI,EAX
004D3788  |.  0FAFCF        |IMUL ECX,EDI
004D378B  |.  03D9          |ADD EBX,ECX
004D378D  |.  40            |INC EAX
004D378E  |.  4A            |DEC EDX
004D378F  |.^ 75 E0         \JNZ SHORT wrmain.004D3771
004D3791  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
004D3794  |.  0FB640 05     MOVZX EAX,BYTE PTR DS:[EAX+5]       ;注册码第六位放入eax
004D3798  |.  6BC0 13       IMUL EAX,EAX,13
004D379B  |.  50            PUSH EAX
004D379C  |.  8BC3          MOV EAX,EBX
004D379E  |.  5A            POP EDX
004D379F  |.  8BCA          MOV ECX,EDX
004D37A1  |.  99            CDQ
004D37A2  |.  F7F9          IDIV ECX
004D37A4      85D2          TEST EDX,EDX                        ;如果edx为0,注册成功
004D37A6      0F85 40010000 JNZ wrmain.004D38EC                 ;关键跳转
004D37AC  |.  6A 00         PUSH 0
004D37AE  |.  A1 EC754D00   MOV EAX,DWORD PTR DS:[4D75EC]
004D37B3  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D37B5  |.  E8 CE15F3FF   CALL wrmain.00404D88
004D37BA  |.  8BC8          MOV ECX,EAX
004D37BC  |.  BA 80394D00   MOV EDX,wrmain.004D3980                  ;  恭喜您,注册成功! 感谢您的支持!!!
004D37C1  |.  A1 D0784D00   MOV EAX,DWORD PTR DS:[4D78D0]
004D37C6  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004D37C8  |.  E8 6FDDF8FF   CALL wrmain.0046153C

注册算法很简单,注册码长度要大于12,下面是注册机:
vc6编译
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define num 13         //改变他来改变注册码的位数

main()
{
char r[10]="1234567890";

int i,j,b,sum,t;
int a[num]={0};
sum=0;
b=0;
srand(time(0));   //产生随机数种子

do
{
  for(i=0;i<num;i++)
  {
  
    j=(int)(9*rand()/(RAND_MAX+1.0)) ;  //随机数控制在0~9之间
    a[i]=r[j];
    b++;
    sum=sum+(a[i]^4)*(18-b);
  }

  t=sum%(a[5]*19);

  if(!t)
  {            
        for(i=0;i<num;i++)
            printf("%c",a[i]);
        printf("\n");
        break;

  }else
  {   
        b=0;
        sum=0;
        continue;
}

}while(1);

return 0;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 46
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习下!!!!
2009-6-27 15:38
0
游客
登录 | 注册 方可回帖
返回
//