首页
社区
课程
招聘
测试版2
发表于: 2005-4-3 17:21 5991

测试版2

2005-4-3 17:21
5991
收藏
免费
支持
分享
最新回复 (10)
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
2
结合dede设置断点很容易来到计算注册码处:
00454B4C   |> /8B4D F4           /mov ecx,dword ptr ss:[ebp-C]           ;  计算你输入的code的ascii和
00454B4F   |. |0FB64C11 FF       |movzx ecx,byte ptr ds:[ecx+edx-1]
00454B54   |. |014D E8           |add dword ptr ss:[ebp-18],ecx
00454B57   |. |42                |inc edx
00454B58   |. |48                |dec eax
00454B59   |.^\75 F1             \jnz short bos9.00454B4C
00454B5B   |>  8B45 F0           mov eax,dword ptr ss:[ebp-10]
00454B5E   |.  E8 69F6FAFF       call bos9.004041CC
00454B63   |.  85C0              test eax,eax
00454B65   |.  7E 14             jle short bos9.00454B7B
00454B67   |.  BA 01000000       mov edx,1
00454B6C   |>  8B4D F0           /mov ecx,dword ptr ss:[ebp-10]          ;  计算固定字符串"bos"的ascii和
00454B6F   |.  0FB64C11 FF       |movzx ecx,byte ptr ds:[ecx+edx-1]
00454B74   |.  014D E4           |add dword ptr ss:[ebp-1C],ecx
00454B77   |.  42                |inc edx
00454B78   |.  48                |dec eax
00454B79   |.^ 75 F1             \jnz short bos9.00454B6C
00454B7B   |>  8B45 EC           mov eax,dword ptr ss:[ebp-14]
00454B7E   |.  E8 49F6FAFF       call bos9.004041CC
00454B83   |.  85C0              test eax,eax
00454B85   |.  7E 14             jle short bos9.00454B9B
00454B87   |.  BA 01000000       mov edx,1
00454B8C   |>  8B4D EC           /mov ecx,dword ptr ss:[ebp-14]          ;  计算serial number的ascii和
00454B8F   |.  0FB64C11 FF       |movzx ecx,byte ptr ds:[ecx+edx-1]
00454B94   |.  014D E0           |add dword ptr ss:[ebp-20],ecx
00454B97   |.  42                |inc edx
00454B98   |.  48                |dec eax
00454B99   |.^ 75 F1             \jnz short bos9.00454B8C
00454B9B   |>  335D E8           xor ebx,dword ptr ss:[ebp-18]           ;  ebx=sum_of_code xor sum_of_name
00454B9E   |.  8B45 E4           mov eax,dword ptr ss:[ebp-1C]           ;  取sum_of_string_bos
00454BA1   |.  F76D E0           imul dword ptr ss:[ebp-20]              ;  eax=sum_of_string_bos * serialsum
00454BA4       3BD8              cmp ebx,eax                             ;  ebx=eax?
00454BA6       74 1D             je short bos9.00454BC5

计算过程如注释,因为异或是可以逆的,所以很容易逆向得到注册码.
注册机代码(编程很烂,凑合看吧):
/*-------------keygen.cpp------------------*/
#include <iostream>
#include <fstream>
using namespace std;
int sum(char *);
void main()
{
        char FixString[]="bos";
        char name[20];
        char serial[20];
        int SumOfName(0),SumOfSerial(0),SumOfString(0),SumOfCode(0);
        char ch;
        cout<<"Your name:";
        cin>>name;
        cout<<"\nSerial number:";
        cin>>serial;
        SumOfName=sum(name);
        SumOfSerial=sum(serial);
        SumOfString=sum(FixString);
        SumOfCode=(SumOfString*SumOfSerial)^SumOfName;
        fstream file;
        file.open("code.txt",ios::out);
        if(!file)
                cout<<"file create error!";
        else
        {
                if((SumOfCode%0x7a)>=0x30)
                {
                        for(int i=1;i<=(SumOfCode/0x7a);i++)
            {
                                ch='z';
                                file.write(&ch,sizeof(char));
                        }
                        ch=SumOfCode%0x7a;
                        file.write(&ch,sizeof(char));
                       
                }
                else
                {
                        for(int i=1;i<=(SumOfCode/0x7a-1);i++)
            {
                                ch='z';
                                file.write(&ch,sizeof(char));
                        }
                        ch='A';
                        file.write(&ch,sizeof(char));
                        ch=SumOfCode%0x7a+0x7a-'A';
                        file.write(&ch,sizeof(char));
                }
                file.close();
        }

        cout<<"\nPlease open code.txt to get your register code.\n"
                <<"Press any key to exit."<<endl;
        cin.get();
        cin.get();
}
int sum(char *s)
{
        int sum(0);
        for(int i=0;s[i]!='\0';i++)
        sum+=s[i];
        return sum;
}
/*---------end----------*/
2005-4-4 02:43
0
雪    币: 217
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bos
3
为什么dede还是可以用呢?
2005-4-4 08:31
0
雪    币: 319
活跃值: (2549)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
4
不用DEDE能找到关键处吗?
2005-4-4 09:52
0
雪    币: 217
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bos
5
dede可以用原来是我发错了文件啦..修改了一下代码..试多一次啊
2005-4-4 11:30
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
6
最初由 csjwaman 发布
不用DEDE能找到关键处吗?

dede只是方便对delphi程序结构和对应事件的分析、定位,能不能用对能否破解的影响最多是花时间的多少吧
2005-4-4 12:55
0
雪    币: 319
活跃值: (2549)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
7
最初由 ikki 发布

dede只是方便对delphi程序结构和对应事件的分析、定位,能不能用对能否破解的影响最多是花时间的多少吧


我的DEDE好象不能用,提示文件被加壳。
2005-4-4 13:08
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
8
可能是dede版本不同的原因吧,我的dede是在看雪这的工具下载里下的。
2005-4-4 13:39
0
雪    币: 215
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
To IKKI
用一定的方法直接用UEDIT修改EXE文件后,DEDE无法打开。
2005-4-4 14:48
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
10

delphi我没学过,对于这样来anti dede的方法更是毫无了解。 蓝色光芒如果愿意,可以说说,让大家都学点东西。:
2005-4-4 14:58
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
11
最初由 ikki 发布

delphi我没学过,对于这样来anti dede的方法更是毫无了解。 蓝色光芒如果愿意,可以说说,让大家都学点东西。:


ikki兄真是"killer for bos crackme!"
2005-4-4 21:22
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册