首页
社区
课程
招聘
OD破解TraceMe及注册机[原创]
发表于: 2006-3-26 16:18 17451

OD破解TraceMe及注册机[原创]

2006-3-26 16:18
17451
收藏
免费 7
支持
分享
最新回复 (33)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
怎么也看不懂   学这个的第三天  努力
2006-5-18 02:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
支持,
2006-7-7 17:03
0
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
好象没这么麻烦,我在运行后,用万能断点,断下,返回用户代码后
直接来到  004011E5   .  E8 56010000   CALL TraceMe.00401340
F7 进入,发现是算法 CALL (事前我把附件下了,但没看楼主的破文,这样先自己玩一下,锻炼一下)

00401340  /$  55            PUSH EBP
00401341  |.  8B6C24 0C     MOV EBP,DWORD PTR SS:[ESP+C]             ;  EBP 保存输入的用户名
00401345  |.  56            PUSH ESI
00401346  |.  57            PUSH EDI
00401347  |.  8B7C24 18     MOV EDI,DWORD PTR SS:[ESP+18]            ;  EDI = 5
0040134B  |.  B9 03000000   MOV ECX,3
00401350  |.  33F6          XOR ESI,ESI
00401352  |.  33C0          XOR EAX,EAX
00401354  |.  3BF9          CMP EDI,ECX                             00401356  |.  7E 21         JLE SHORT TraceMe.00401379
00401358  |.  53            PUSH EBX
00401359  |>  83F8 07       /CMP EAX,7
0040135C  |.  7E 02         |JLE SHORT TraceMe.00401360
0040135E  |.  33C0          |XOR EAX,EAX
00401360  |>  33D2          |XOR EDX,EDX
00401362  |.  33DB          |XOR EBX,EBX
00401364  |.  8A1429        |MOV DL,BYTE PTR DS:[ECX+EBP]            ;  [ECX+EBP] ECX =3+ EBP 就是取注册名的第三个字符
00401367  |.  8A98 30504000 |MOV BL,BYTE PTR DS:[EAX+405030]         ;  将 0C 送入 BL
0040136D  |.  0FAFD3        |IMUL EDX,EBX                            ;  将 两个字符相乘,结果送入 EDX
00401370  |.  03F2          |ADD ESI,EDX                             ;  把上面的结果和 ESI 相加,结果入 ESI
00401372  |.  41            |INC ECX                                 ;  指向下一个字符(用户名)
00401373  |.  40            |INC EAX                                 ;  EAX 加 1,使下一个想乘的是 0A
00401374  |.  3BCF          |CMP ECX,EDI                             ;  和 5 做比较,大就跳出
00401376  |.^ 7C E1         \JL SHORT TraceMe.00401359
00401378  |.  5B            POP EBX

发现,算法中只计算用户名的 4,5 位,而相乘的两个数是固定的

0XC 和 OXA ,于是就写了注册机

#include<stdio.h>
#include<string.h>
main()
{
    int i,bp,si=0,v=0xC,len;
    char n[20];
         printf("请输入用户名\n");
      s:
        gets(n);
        len=strlen(n);
        if(len<5)
        {
        printf("用户名不能小于 5 个字符,请重新输入\n");
        goto s;
        }
        for(i=3;i<5;i++)
        {
            bp=n[i];
            bp*=v;
            v=v-2;
            si+=bp;
        }
        printf("注册码是:%d\n",si);
}
2006-7-7 22:10
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
正在学注册机,支持一下!
2006-7-8 10:29
0
雪    币: 332
活跃值: (30)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝
30
其实直接用字符串参考就行了,不是可以找到“你输入字符要大于四个!”吗!
说明在它附近调用过GetDlgItemText函数,向下翻两页就可以发现
2006-7-8 19:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
写得不错,那天我也发一份破文,可惜汇编学得不行
2006-7-10 15:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
写的不错,适合我这类菜鸟,学习中....
2006-7-11 14:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sdy
33
ANSON
1728
2006-7-11 14:34
0
雪    币: 152
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
收下了,学习中...
2006-7-11 14:55
0
游客
登录 | 注册 方可回帖
返回
//