首页
社区
课程
招聘
[原创]我的第6个CrackMe
发表于: 2005-9-19 19:58 11295

[原创]我的第6个CrackMe

2005-9-19 19:58
11295
收藏
免费 7
支持
分享
最新回复 (18)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶一个先!
2005-9-28 11:33
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
3
原密码表:"071362de9f8ab45c"
但是,算法密码表为:"71362de9f8ab45c"

对不?

Game Over

Name:KuNgBiM
Serial:ca5a85a5ad4ca1
2005-9-28 12:08
0
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
2005-9-28 13:12
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
5
最初由 KuNgBiM 发布
原密码表:"071362de9f8ab45c"
但是,算法密码表为:"71362de9f8ab45c"

对不?

........


你观察得很仔细!的确如你所说。
2005-9-28 19:48
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
6
最初由 xsy3660 发布


你做得很棒!

能做出软件的算法注册机而非内存注册机就更完美了!
2005-9-28 19:50
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
7
注册方法代码:VC的
void CKeyMakerDlg::OnButton1()
{
        DWORD Vol1,Vol2,dw_ex,dw_Usr;
        float a,b;
        CString CSUsrName,CSRegKey;
        CString ori;
        ori = "071362de9f8ab45c";

        GetDlgItemText(IDC_EDIT_USRNAME,CSUsrName);

        GetVolumeInformation("C:\\",NULL,12,&Vol1,NULL,NULL,NULL,10);
        GetVolumeInformation("D:\\",NULL,12,&Vol2,NULL,NULL,NULL,10);

        a = float(Vol1);
        b = float(Vol2);
       
        a = a * a;
        b = b * b;
        a += b;
        b = sqrt(a);
        dw_ex = DWORD(b);
       
        dw_Usr = 1;
        for(int i = 0; i < CSUsrName.GetLength(); i++)
        {
                dw_Usr *= int(CSUsrName.GetAt(i));
        }

        _asm
        {
                mov eax,dw_Usr
                rol eax,0x1
                mov dw_Usr,eax
        }
        dw_Usr |= dw_ex;
        dw_Usr &= 0xFFFFFFF;

        while(dw_Usr != 0)
        {
                CSRegKey += ori.GetAt(dw_Usr % 0x10);
                dw_Usr /= 0x4;
        }
        SetDlgItemText(IDC_EDIT_REGKEY,CSRegKey);
}

编译以后要用OD来改一改:

004013B7  |.  68 20304000   push KeyMaker.00403020                   ; |RootPathName = "D:\"
004013BC  |.  FFD6          call esi                                 ; \GetVolumeInformationA
004013BE  |.  8B45 E0       mov eax,dword ptr ss:[ebp-20]
004013C1  |.  8B4D DC       mov ecx,dword ptr ss:[ebp-24]
004013C4  |.  8945 D4       mov dword ptr ss:[ebp-2C],eax
004013C7  |.  895D D8       mov dword ptr ss:[ebp-28],ebx
004013CA  |.  DF6D D4       fild qword ptr ss:[ebp-2C]
004013CD  |.  894D D4       mov dword ptr ss:[ebp-2C],ecx
004013D0  |.  895D D8       mov dword ptr ss:[ebp-28],ebx
004013D3  |.  DF6D D4       fild qword ptr ss:[ebp-2C]
004013D6  |.  D9C0          fld st
004013D8  |.  D8C9          fmul st,st(1)

把QWORD的两项改为DWORD
004013C7  |.  895D D8       mov dword ptr ss:[ebp-28],ebx
004013CA      DB45 D4       fild dword ptr ss:[ebp-2C]
004013CD  |.  894D D4       mov dword ptr ss:[ebp-2C],ecx
004013D0  |.  895D D8       mov dword ptr ss:[ebp-28],ebx
004013D3      DB45 D4       fild dword ptr ss:[ebp-2C]
004013D6  |.  D9C0          fld st
004013D8  |.  D8C9          fmul st,st(1)

BTW:请问高手们,有没有办法在原代码里面修改呢?
float明明是4个字节的啊,应该是DWORD的,不应该是QWORD的
是不是VC编译器有问题了?
2005-9-29 19:56
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
8
最初由 Pr0Zel 发布
注册方法代码:VC的
void CKeyMakerDlg::OnButton1()
{
DWORD Vol1,Vol2,dw_ex,dw_Usr;
float a,b;
........


恭喜!

你的注册算法是正确的!

因为俺不会用VC所以无法回答你的BTW^_^
2005-9-30 12:51
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
俺发一个tc的注册机,(测试通过,在本机上可以使用)请高手指点一下,我的c水平有限您就将就一下吧!!
#include "stdio.h"

#include "conio.h"
unsigned  long sn=0x1,temp=1,len,d,e,e1,temp1;
double a=1,b,c=2147483647;
char str1[]="071362de9f8ab45c";
char     str2[50] ;
int k=0,k1;
main(){

    char name[100];
    int i;
    i=1;
    temp=1;
    len=strlen(name);
    printf("Please enter your name: ");
    scanf("%s",name);
    len=strlen(name);
    for(i=0;i<len;i++)
        { temp*=name[i];
          a*=name[i];
          if(a>temp)
                    { k1=(a-temp)/(2*c);
                      temp=temp+k1;
                      a=temp;
                    }
           }
    e=temp ;
    temp=(e<<1)+(e1>>31);

    temp=temp|0x38a1b332;

    temp=temp&0x0fffffff;
    while (temp!=0)
    {temp1=temp%0x10 ;

      if( temp1<0x10)
      {
      str2[k]=str1[temp1];
      }
      k+=1;
    temp/=4;
    }
    printf("your sn is:             ");
    for(i=0;i<k;i++){
    printf("%c",str2[i]);}
    printf("\n\n");
    getch();
    }
2005-10-14 11:48
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
10
temp=temp|0x38a1b332;
这一句不正确,
那个0x38A1B332是由C,D盘的序列号算出来的
2005-10-14 12:09
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
高手就是高手!!那一句我确实偷懒了。
以后还要向您多多学习!!

还有我在试“111222333”时结果是不对的,算法肯定有问题,请帮忙看一下!!

Pr0Zel ---》我希望和你做个朋友!!
2005-10-14 16:48
0
雪    币: 221
活跃值: (161)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
我是个刚学破解10来天的菜菜鸟,这个CrackMe我跟了好久(15个钟以上),我最后也勉强跟出本机注册码及大致算法了,但像个别朋友一样都没有像PrOZel那样分析出最关键的用C、D盘序列号算出来的那个变化值,我明白这就是差距(当然是我差得最远)。

后来看了PrOZel的算法后,又跟了好久,终于完全明白了。这个CrackMe让我学到不少东西,非常感谢happytown(我还在学习你的另一篇“对一个CrackMe的分析”)和PrOZel。

PrOZel提到的浮点和Dword,我的理解不知道对不对:

00401062    |.  DB45 08       fild [arg.1]                   ;  C盘序列号
00401065    |.  D9C0          fld st
00401067    |.  DEC9          fmulp st(1),st                 ;  自乘
00401069    |.  DB45 0C       fild [arg.2]                   ;  D盘序列号
0040106C    |.  D9C0          fld st
0040106E    |.  DEC9          fmulp st(1),st                 ;  自乘
00401070    |.  DEC1          faddp st(1),st                 ;  相加
00401072    |.  D9FA          fsqrt                          ;  平方根
00401074    |.  DB5D FC       fistp [local.1]                ;  以整数存储

最后化为整数存储,所以是否应该先用浮点变量,计算出结果后用函数将浮点变量化为长整数。
2005-10-15 19:54
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
13
最初由 hud 发布
这个CrackMe让我学到不少东西,非常感谢happytown(我还在学习你的另一篇“对一个CrackMe的分析”)和PrOZel。

PrOZel提到的浮点和Dword,我的理解不知道对不对:
........


建议你看看intel指令集对浮点指令的解释,然后就会明白那段代码是干什么用的。

还有,共同提高,共同进步。
2005-10-18 21:10
0
雪    币: 221
活跃值: (161)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14
谢谢你,我后来把这段的意义弄明白了。
2005-11-3 19:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
下来看看,,
2005-11-3 22:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
刚开始学,用msam没有搞定,不懂算法,只好用oll了
goodfriend
8d24ccccce24c3
不会上传图片
2005-11-3 23:16
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
17
最初由 silkroad 发布
刚开始学,用msam没有搞定,不懂算法,只好用oll了
goodfriend
8d24ccccce24c3
不会上传图片


不懂算法没关系,能找到明码也是一种进步;至于算法,慢慢来!

但一定要学,多看一些教程。比如,看雪的CrackMe精华就很不错。
2005-11-8 19:59
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不太明白.........
2005-11-11 08:37
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
19
晕,刚作出注册机,不让传附件.源代码太长,不贴了
2005-11-14 17:59
0
游客
登录 | 注册 方可回帖
返回
//