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种解法,只是按照算法来个简注册机咯~