冷血书生 发表于 2008-7-31 03:33:54

我的第三个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 编辑 ]

lixy8888 发表于 2008-7-31 09:03:12

????

难道这就是传说中的沙发??不敢相信!!!!!!

hflywolf 发表于 2008-7-31 11:00:50

/:018 /:018 /:018

搞定了.........

寂寞的季节 发表于 2008-7-31 12:29:07

C...新的C牛诞生了..

jiangbonet 发表于 2008-7-31 21:45:14

呵呵,爆了////

[ 本帖最后由 jiangbonet 于 2008-7-31 21:46 编辑 ]

绝恋de烦神 发表于 2008-7-31 23:30:37



简单分析了一下算法。分析有误请指教。

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

qifeon 发表于 2008-8-1 16:35:03

来个简单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为何用户名为字母时,无法输入注册码?

冷血书生 发表于 2008-8-1 20:29:54

printf("注册码为:");
printf("%d\n",sum);

改为这样
printf("注册码为:%d\n",sum);

可以吗?

fengchen 发表于 2008-8-1 20:46:41

可以 ·····

qifeon 发表于 2008-8-2 22:38:10

早知道楼主是算法高手,膜拜!感谢有时间陪我们菜鸟玩玩。
源代码中下面可能是笔误?

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
查看完整版本: 我的第三个crackme(更新源代码)