lhl8730 发表于 2006-7-11 10:46:51

简单
我也来一组注册码:
用户名:123678
注册码:6787703****5139123
算法分析,注册机让其他人来做吧!!!呵呵~~~~

黑夜彩虹 发表于 2006-7-11 11:28:26

等破文学习~~~

快雪时晴 发表于 2006-7-11 21:54:39

跟踪有点难度,不知大家怎么下断的

我这里简单把算法总结一下:

1、用户名6位,N1N2N3N4N5N6
2、注册码满足如下形式:
      N4N5N6X1X2X3X4ZZ.....ZZY1Y2Y3Y4N1N2N3N4
      X1-X4表示取左边4位-7位,Y1-Y4表示从右边取倒数第4位到第7位,均为数字
   因此X和Y可以公用一部分
3、条件
   X1+十进制形式(X2X3X4)==710.(0x2C6)
   十进制形式(Y1Y2Y3)+Y4==522.(0x20A)


举例:
ABCDEF
DEF87025148ABC

DEF8702000000000000000000000005148ABC


举例2:
KXSHQQ
HQQ07105220KXS

   
好了,注册机很容易写了,留给下一个吧

快雪时晴 发表于 2006-7-11 22:00:23

忍不住再贴一点东西,它可费了我些时间

以下是两个分段比较



004018BF   .50               push    eax                        ;DEF1122(334)
004018C0   .E8 11BC0100      call    0041D4D6
004018C5   .56               push    esi
004018C6   .8BF8             mov   edi, eax
004018C8   .E8 09BC0100      call    0041D4D6
004018CD   .03F8             add   edi, eax                     ;(334.)+(4)
004018CF   .8B4424 3C      mov   eax,
004018D3   .83C4 08          add   esp, 8
004018D6   .81FF 0A020000    cmp   edi, 20A
004018DC   .0F94C3         sete    bl






0040181D   .E8 AE040000      call    00401CD0
00401822   .8B00             mov   eax,
00401824   .8B36             mov   esi,
00401826   .50               push    eax
00401827   .E8 AABC0100      call    0041D4D6
0040182C   .56               push    esi
0040182D   .8BD8             mov   ebx, eax
0040182F   .E8 A2BC0100      call    0041D4D6
00401834   .03D8             add   ebx, eax
00401836   .8B4424 38      mov   eax,
0040183A   .83C4 08          add   esp, 8
0040183D   .81FB C6020000    cmp   ebx, 2C6
00401843   .0F94C3         sete    bl




[ 本帖最后由 快雪时晴 于 2006-7-11 22:02 编辑 ]

lgjxj 发表于 2006-7-11 23:33:36

呵呵,公布了答案,没下的人就提不起劲了

caterpilla 发表于 2006-7-12 08:52:48

原帖由 快雪时晴 于 2006-7-11 21:54 发表
跟踪有点难度,不知大家怎么下断的

我这里简单把算法总结一下:

1、用户名6位,N1N2N3N4N5N6
2、注册码满足如下形式:
      N4N5N6X1X2X3X4ZZ.....ZZY1Y2Y3Y4N1N2N3N4
      X1-X4表示取左边4位-7位,Y ...
高手~~~~~~~~~:handshake:victory:

野猫III 发表于 2006-7-12 20:45:33

原帖由 lovewxt 于 2006-7-12 13:25 发表
呵呵~这段时间不好意思啊`忙着考试呢,坛子里的事都落下了。先向各位兄弟说声对不起拉。

错怪兄弟了,向逍遥兄道歉~~~ :lol :lol

飘云 发表于 2006-7-13 23:51:36

刚刚下载看了下~~
最阴毒的地方在此:;P

00401627         8378 F4 06      cmp dword ptr ds:,6
0040162B         BB 01000000       mov ebx,1
00401630         74 04             je short CrackMe_.00401636
00401632         895C24 20         mov dword ptr ss:,ebx         ; =ebx=1★此处相当重要★



0040196D         837C24 20 00      cmp dword ptr ss:,0    最后一次验证!
00401972         75 1E             jnz short CrackMe_.00401992         ; Game Over


sn=right(name,3) & "07105220" & left(name,3)

0+0x2C6=710
0x20A+0=522

大概就这样吧(未调试):
void CPYG_KeyGenDlg::OnOK()
{

        UpdateData (true) ;
const char str[]="07105220";
const char err[]="用户名必须6位!";
int len;
CString name,sn;
name = m_User;
len=m_User.GetLength ();

if (len!=6) //MessageBox("用户名必须6位。","错误",MB_OK);
        m_Code = err;
else
        {
        sn=m_User.Right(3)+str+m_User.Left(3);
        m_Code = sn;
        }
UpdateData (false);
}

快雪时晴 发表于 2006-7-14 10:20:34

原帖由 飘云 于 2006-7-13 23:51 发表
const char str[]="07105220";


不是固定的

飘云 发表于 2006-7-14 22:03:59

原帖由 快雪时晴 于 2006-7-14 10:20 发表


不是固定的

有N种解法,只是按照算法来个简注册机咯~
页: 1 [2] 3
查看完整版本: 献给第三课,CrackMe_Vc3(VC无壳,算法分析型)给大家玩。。。。。