我的第三个crackme(更新源代码)
#include "stdio.h"void main()
{
int i,b,Sum=0,Sum1=0;
char a;
printf("请输入用户名:\n");
scanf("%s",&a);
printf("请输入注册码:\n");
scanf("%s",&b);
for(i=1;i<=10;i++)
{
Sum=a+Sum+i;
}
if (a<=0)
printf("请输入用户名\n");
else
for(i=1;i<=10;i++)
{
Sum1=b+Sum1+i;
}
if(Sum1==Sum)
printf("注册成功\n");
else
printf("注册失败\n");
scanf("%s",&a);
}
不知咋回事了.呵呵
俺只是学了三天,不要以为我有很牛的加密!!!!!!!
[ 本帖最后由 冷血书生 于 2008-8-1 20:33 编辑 ]
????
难道这就是传说中的沙发??不敢相信!!!!!! /:018 /:018 /:018搞定了......... C...新的C牛诞生了.. 呵呵,爆了////
[ 本帖最后由 jiangbonet 于 2008-7-31 21:46 编辑 ]
简单分析了一下算法。分析有误请指教。
004012AE C745 F4 0100000>MOV DWORD PTR SS:,1 ; 初始化为1
004012B5 837D F4 0A CMP DWORD PTR SS:,0A ; 和0A比较
004012B9 7E 05 JLE SHORT cm2.004012C0 ; 小于等于就跳
004012BB EB 18 JMP SHORT cm2.004012D5
004012BD 8D76 00 LEA ESI,DWORD PTR DS:
004012C0 8B45 FC MOV EAX,DWORD PTR SS: ; 把16进制的用户名送给EAX
004012C3 8B55 F0 MOV EDX,DWORD PTR SS: ; EDX=
004012C6 01D0 ADD EAX,EDX ; EAX=EAX+EDX
004012C8 8B55 F4 MOV EDX,DWORD PTR SS: ; EDX=
004012CB 01C2 ADD EDX,EAX ; EDX=EDX+EAX
004012CD 8955 F0 MOV DWORD PTR SS:,EDX ; =EDX
004012D0 FF45 F4 INC DWORD PTR SS: ; +1
004012D3^ EB E0 JMP SHORT cm2.004012B5
004012D5 837D FC 00 CMP DWORD PTR SS:,0
004012D9 7F 15 JG SHORT cm2.004012F0
004012DB 83C4 F4 ADD ESP,-0C
004012DE 68 31124000 PUSH cm2.00401231 ; 请输入用户名\n
004012E3 E8 40010000 CALL <JMP.&msvcrt.printf>
004012E8 83C4 10 ADD ESP,10
004012EB EB 33 JMP SHORT cm2.00401320
004012ED 8D76 00 LEA ESI,DWORD PTR DS:
004012F0 8B45 F8 MOV EAX,DWORD PTR SS: ; 把16进制的假码送给EAX
004012F3 3B45 F0 CMP EAX,DWORD PTR SS: ; EAX和比较
004012F6 75 18 JNZ SHORT cm2.00401310 ; 不相等就GAME OVER
来个简单C算法注册机
#include "stdio.h"
void main()
{
unsigned int name,i,sum=0;
printf("请输入用户名:");
scanf("%d",&name);
for (i=1;i<=10;i++)
sum=sum+name+i;
printf("注册码为:");
printf("%d\n",sum);
system("PAUSE");
}
不知楼主CRCKME为何用户名为字母时,无法输入注册码? printf("注册码为:");
printf("%d\n",sum);
改为这样
printf("注册码为:%d\n",sum);
可以吗? 可以 ····· 早知道楼主是算法高手,膜拜!感谢有时间陪我们菜鸟玩玩。
源代码中下面可能是笔误?
int i,b,Sum=0,Sum1=0;
char a;
printf("请输入用户名:\n");
scanf("%s",&a); 这里前面定义为数组,&a应改为a
printf("请输入注册码:\n");
scanf("%s",&b); 前面定义为整型,%s 应为%d
页:
[1]
2