首页
社区
课程
招聘
一个非常简单的crackme算法注册机(适合入门)
发表于: 2004-12-12 14:49 17694

一个非常简单的crackme算法注册机(适合入门)

killl 活跃值
10
2004-12-12 14:49
17694

一个非常简单的crackme算法注册机(适合入门)

附件:crackme4.rar

这个是极酷论坛的crackme4,算法简单,适合想做自己算法注册机的入门者学习
我们的重点放在算法上,peid查询得知,yoda's cryptor 1.2,使用脱壳板块的脱壳机即可脱壳。

错误提示为:
---------------------------
go on!
---------------------------
Try again!^_*
---------------------------
确定   
---------------------------

所以下断 bpx messageboxa

004015F5    > \68 7C7140>push crackme4.0040717C                    ; |Title = "go on!"
004015FA    .  68 6C7140>push crackme4.0040716C                    ; |Text = "Try again!^_*"
004015FF    .  56        push esi                                  ; |hOwner
00401600    .  FF15 4871>call dword ptr ds:[<&USER32.MessageBoxA>] ; \MessageBoxA
00401606    >  5F        pop edi                                   ;  Default case of switch 0040152D

输入假码,断在00401600   
向上面看看:
004015B8    .  68 F09740>push crackme4.004097F0                    ;  ASCII "killl"用户名
004015BD    .  68 F09640>push crackme4.004096F0                    ;  ASCII "123456"假码
004015C2    .  56        push esi
004015C3    .  E8 E8FBFF>call crackme4.004011B0
004015C8    .  83C4 0C   add esp,0C
004015CB    .  85C0      test eax,eax
004015CD    .  6A 00     push 0                                    ; /Style = MB_OK|MB_APPLMODAL
004015CF    .  74 24     je short crackme4.004015F5                ; |
004015D1    .  68 A07140>push crackme4.004071A0                    ; |Title = "Congratulations!"
004015D6    .  68 847140>push crackme4.00407184                    ; |Text = "Well Done, you've passed!"
004015DB    .  56        push esi                                  ; |hOwner
004015DC    .  FF15 4871>call dword ptr ds:[<&USER32.MessageBoxA>] ; \MessageBoxA
004015E2    .  5F        pop edi
004015E3    .  33C0      xor eax,eax
004015E5    .  5E        pop esi
004015E6    .  8B4C24 4C mov ecx,dword ptr ss:[esp+4C]
004015EA    .  E8 300100>call crackme4.0040171F
004015EF    .  83C4 50   add esp,50
004015F2    .  C2 1000   retn 10
004015F5    >  68 7C7140>push crackme4.0040717C                    ; |Title = "go on!"

就是从004015CF跳来的,所以004015C3 的call是关键,跟入:

00401217   |.  2BC6              sub eax,esi
00401219   |.  85C9              test ecx,ecx                        ;  注册码的位数
0040121B   |.  74 67             je short crackme4.00401284
0040121D   |.  83F8 08           cmp eax,8                           ;  判断位数
00401220   |.  75 62             jnz short crackme4.00401284         ;  不是8位就完蛋了
00401222   |.  33C0              xor eax,eax
00401224   |.  85C9              test ecx,ecx                        ;  名字的位数
00401226   |.  BE 78563412       mov esi,12345678                    ;  先赋值一个常数
0040122B   |.  76 17             jbe short crackme4.00401244
0040122D   |.  8D49 00           lea ecx,dword ptr ds:[ecx]
00401230   |>  8BD6              /mov edx,esi
00401232   |.  03F6              |add esi,esi                        ;  乘以2
00401234   |.  C1EA 07           |shr edx,7                          ;  右移7位
00401237   |.  0BD6              |or edx,esi                         ;  跟edx异或
00401239   |.  0FB63438          |movzx esi,byte ptr ds:[eax+edi]    ;  从名字第一位开始赋值
0040123D   |.  33F2              |xor esi,edx
0040123F   |.  40                |inc eax                            ;  下一位
00401240   |.  3BC1              |cmp eax,ecx                        ;  名字是不是已经比较完毕
00401242   |.^ 72 EC             \jb short crackme4.00401230
00401244   |>  8D4424 0C         lea eax,dword ptr ss:[esp+C]
00401248   |.  50                push eax
00401249   |.  8D4C24 18         lea ecx,dword ptr ss:[esp+18]
0040124D   |.  51                push ecx
0040124E   |.  E8 4DFEFFFF       call crackme4.004010A0
00401253   |.  8D5424 18         lea edx,dword ptr ss:[esp+18]
00401257   |.  52                push edx
00401258   |.  55                push ebp
00401259   |.  E8 42FEFFFF       call crackme4.004010A0
0040125E   |.  8B7C24 1C         mov edi,dword ptr ss:[esp+1C]       ;  你的机器码
00401262   |.  8B4424 20         mov eax,dword ptr ss:[esp+20]       ;  输入的假码
00401266   |.  83C4 10           add esp,10
00401269   |.  33C7              xor eax,edi                         ;  与机器码异或
0040126B   |.  33C9              xor ecx,ecx
0040126D   |.  3BC6              cmp eax,esi                         ;  跟上面的esi比较
0040126F   |.  0F94C1            sete cl
00401272   |.  5F                pop edi
00401273   |.  5E                pop esi
00401274   |.  5D                pop ebp
00401275   |.  8BC1              mov eax,ecx
00401277   |.  8B4C24 14         mov ecx,dword ptr ss:[esp+14]
0040127B   |.  E8 9F040000       call crackme4.0040171F
00401280   |.  83C4 18           add esp,18
00401283   |.  C3                retn

算法很简单

00401226   esi=0x12345678
00401230   edi=esi
00401234   esi=esi+esi
00401237   esi=esi 异或 edi
00401239   esi=你输入名字的第一位
0040123D   esi=esi 异或 edi
0040123D   计数器加一
00401240   名字是不是比较完毕
00401242   没有就跳到00401230

算法注册机如下:

tc2.0 + winxp sp2下编译通过

/* Name:     keygen for 极酷论坛破解学院 crackme4 */
/* Author:   KiLlL *//* Date:     2004-12-5 15:06 */

#include "stdio.h"

#include "conio.h"

main(){
    unsigned long seed=0x12345678,sn,temp,machine=0x0;
    char name[100];
    int i;
    printf("KeyGen for Crackme4 by: KiLlL 2004-12-5\n\n");
    printf("Please enter your name: \n");
    scanf("%s",name);
    printf("Please enter your machine code: \n");
    scanf("%lx",&machine);
    for(i=0;i<name[i];i++)
        {
            temp=seed;
            seed*=2;
            temp>>=7;
            temp|=seed;
            seed=name[i]^temp;
        }
    sn=seed^machine;
    printf("Your sn: %lX\n",sn);
    getch();
    return(0);}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (35)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
入门学习……
2004-12-12 15:17
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持!!!
2004-12-12 17:23
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不好意思 哦看不懂 我想学破解但是不知道从那下手
2004-12-12 18:36
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
继续努力啊 :D :D
2004-12-12 19:18
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
下个看看。
谢谢了。
2004-12-13 13:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
同意3楼的看法,
2004-12-13 14:35
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持支持。。
2004-12-13 15:49
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
004015C3 是关键call (004015C3 call crackme4.004011B0)

F7进去:
楼主然后怎么就到00401217 去了呢?进去应该是004011B0这个地址啊   在004011B0这个地址函数里都没有再call到00401217这个地方啊
2005-4-30 06:50
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
还有这个不懂

004011F1   |.  8BC7        mov eax,edi                                    ;  eax='wqrz'
004011F3   |.  8D50 01     lea edx,dword ptr ds:[eax+1]
004011F6   |>  8A08        /mov cl,byte ptr ds:[eax]                      ;  cl ='w'
004011F8   |.  40          |inc eax
004011F9   |.  84C9        |test cl,cl                                    ;  若'wqrz'完了 就跳出
004011FB   |.^ 75 F9       \jnz short crackme4.004011F6

这个循环有什么用??  就判断下users好了没有吗?  是Trim()这样的意思吗??
2005-4-30 06:54
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
11
最初由 Nada 发布
还有这个不懂

004011F1 |. 8BC7 mov eax,edi ; eax='wqrz'
004011F3 |. 8D50 01 lea edx,dword ptr ds:[eax+1]
004011F6 |> 8A08 /mov cl,byte ptr ds:[eax] ; cl ='w'
........

应该是取字符串的长度吧
2005-4-30 22:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主加我QQ教我吧 635646
2005-5-1 14:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
下个看看。
谢谢了。
2005-5-1 22:58
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我是新来的.很想学习,入门
2005-5-4 22:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习并支持!
2005-5-13 15:44
0
雪    币: 214
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
问下,字体颜色是怎么加上的
2005-5-20 09:09
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
恩,不错,学习了
2005-5-21 13:10
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
18
00401237   |.  0BD6              |or edx,esi                         ;  跟edx异或,是或运算吧
2005-6-23 11:47
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
19
请问楼住用的什么破文生成器阿。可以的?斤个下蒌地址。
2005-6-23 17:27
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
吸取中
谢谢
2005-6-27 10:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我下过来,运行不起来
2005-6-27 21:51
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不错,谢谢指教
2005-7-5 11:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
偶还没有入门
2005-7-15 15:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好 支持一下!
2005-7-18 16:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
刚学中.
楼主,怎么脱壳啊???你说的那个软件我怎么一直找不到在哪里下载,能提供下么??
谢谢
2005-7-18 22:36
0
游客
登录 | 注册 方可回帖
返回
//