首页
社区
课程
招聘
[讨论]一个C++写的CreckME
发表于: 2009-5-14 15:09 6966

[讨论]一个C++写的CreckME

2009-5-14 15:09
6966
找出注册码
哈哈。看你行不行

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
  • C.rar (86.67kb,86次下载)
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
好可爱的算法(UnpackMe):

00401380  /$  8B4424 08       mov     eax, dword ptr ss:[esp+8]
00401384  |.  8A5424 04       mov     dl, byte ptr ss:[esp+4]
00401388  |.  8A88 C0B04200   mov     cl, byte ptr ds:[eax+42B0C0]
0040138E  |.  33C0            xor     eax, eax
00401390  |.  80F1 44         xor     cl, 44
00401393  |.  FEC9            dec     cl
00401395  |.  3AD1            cmp     dl, cl
00401397  |.  0F94C0          sete    al
0040139A  \.  C3              retn
2009-5-14 15:52
0
雪    币: 222
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
报毒,不试了!
2009-5-14 17:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
UnpackMe
2009-5-15 16:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还差点工夫…………
2009-5-15 17:57
0
雪    币: 319
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=CuteSnail;623932]好可爱的算法(UnpackMe):

00401380  /$  8B4424 08       mov     eax, dword ptr ss:[esp+8]
00401384  |.  8A5424 04       mov     dl, byte ptr ss:[esp+4]
0...[/QUOTE]

004013A0   .  51            push    ecx
004013A1   .  53            push    ebx
004013A2   .  56            push    esi
004013A3   .  57            push    edi
004013A4   .  8BF1          mov     esi, ecx
004013A6      6A 01         push    1
004013A8   .  E8 31860100   call    004199DE
004013AD   .  8B46 5C       mov     eax, dword ptr [esi+5C]
004013B0   .  BB 01000000   mov     ebx, 1
004013B5   .  8378 F8 08    cmp     dword ptr [eax-8], 8
004013B9   .  74 02         je      short 004013BD
004013BB   .  33DB          xor     ebx, ebx
004013BD   >  33FF          xor     edi, edi
004013BF   >  85DB          test    ebx, ebx
004013C1   .  74 07         je      short 004013CA
004013C3   .  B8 08000000   mov     eax, 8
004013C8   .  EB 06         jmp     short 004013D0
004013CA   >  8B4E 5C       mov     ecx, dword ptr [esi+5C]
004013CD   .  8B41 F8       mov     eax, dword ptr [ecx-8]
004013D0   >  3BF8          cmp     edi, eax                         ;  ZF=0   //EDI=0x0,EAX=0x8
004013D2      7D 1F         jge     short 004013F3                     ;   大于等于则跳,只要计算出edi>=eax就OK
004013D4   .  8B56 5C       mov     edx, dword ptr [esi+5C]
004013D7   .  57            push    edi
004013D8   .  8A0417        mov     al, byte ptr [edi+edx]
004013DB   .  884424 10     mov     byte ptr [esp+10], al
004013DF   .  8B4C24 10     mov     ecx, dword ptr [esp+10]
004013E3   .  51            push    ecx
004013E4   .  E8 97FFFFFF   call    00401380                       ;到大侠贴出来的代码
004013E9   .  83C4 08       add     esp, 8                           ;  在栈中抛去空闲空间,大小为8字节(如EAX为双字,4字节)
004013EC   .  85C0          test    eax, eax
004013EE      74 1F         je      short 0040140F
004013F0   .  47            inc     edi
004013F1   .^ EB CC         jmp     short 004013BF
004013F3   >  85DB          test    ebx, ebx
004013F5   .  74 18         je      short 0040140F
004013F7   .  6A 00         push    0
004013F9   .  68 F8B04200   push    0042B0F8                         ;  ok
004013FE   .  68 E0B04200   push    0042B0E0                         ;  恭喜! 你所填的即为key!
00401403   .  8BCE          mov     ecx, esi
00401405   .  E8 787E0100   call    00419282
0040140A   .  5F            pop     edi
0040140B   .  5E            pop     esi
0040140C   .  5B            pop     ebx
0040140D   .  59            pop     ecx
0040140E   .  C3            retn
0040140F   >  6A 00         push    0
00401411   .  68 D8B04200   push    0042B0D8                         ;  error
00401416   .  68 CCB04200   push    0042B0CC                         ;  key不正确!
0040141B   .  8BCE          mov     ecx, esi
0040141D   .  E8 607E0100   call    00419282
00401422   .  5F            pop     edi
00401423   .  5E            pop     esi
00401424   .  5B            pop     ebx
00401425   .  59            pop     ecx
00401426   .  C3            retn

我咋感觉跟你说的这个算法没啥关系呀。。。。。。。。。。。。
2009-5-16 11:47
0
雪    币: 317
活跃值: (13)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
int a[]={0x12,0x2B,0x35,0x26,0x20,0x28,0x0A,0x22};
        int tmp[MAXBYTE];
        for (int i=0;i<8;i++)
        {
                tmp[i]=a[i]^0x44;
                tmp[i]-=1;
        }

        for (i=0;i<8;i++)
        {
                printf("%c",tmp[i]);
        }
2009-5-16 18:24
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
004013A0  /.  51            PUSH ECX                                 ;  保存ECX
004013A1  |.  53            PUSH EBX                                 ;  保存EBX
004013A2  |.  56            PUSH ESI                                 ;  保存ESI
004013A3  |.  57            PUSH EDI                                 ;  保存EDI
004013A4  |.  8BF1          MOV ESI,ECX                              ;  将ECX内容赋值给ESI
004013A6  |.  6A 01         PUSH 1                                   ;  参数1 压栈
004013A8  |.  E8 31860100   CALL 004199DE                            ;  取到编辑框注册码信息
004013AD  |.  8B46 5C       MOV EAX,[ESI+5C]                         ;  将ESI+5C地址单元内容给EAX ,实际是指向注册码字符串首地址
004013B0  |.  BB 01000000   MOV EBX,1                                ;  EBX赋值为1
004013B5  |.  8378 F8 08    CMP DWORD PTR [EAX-8],8                  ;  注册码长度与8比较
004013B9  |.  74 02         JE SHORT 004013BD                        ;  等于则跳转到004013BD
004013BB  |.  33DB          XOR EBX,EBX                              ;  EBX清零
004013BD  |>  33FF          XOR EDI,EDI                              ;  EDI清零
004013BF  |>  85DB          /TEST EBX,EBX                            ;  测试EBX是否为0
004013C1  |.  74 07         |JE SHORT 004013CA                       ;  等于0 则跳到004013CA
004013C3  |.  B8 08000000   |MOV EAX,8                               ;  将8赋值给EAX
004013C8  |.  EB 06         |JMP SHORT 004013D0                      ;  无条件跳到001013D0处
004013CA  |>  8B4E 5C       |MOV ECX,[ESI+5C]                        ;  将注册码首地址复制给ECX
004013CD  |.  8B41 F8       |MOV EAX,[ECX-8]                         ;  将注册码长度给EAX
004013D0  |>  3BF8          |CMP EDI,EAX                             ;  EDI与EAX比较
004013D2  |.  7D 1F         |JGE SHORT 004013F3                      ;  大于等于则跳004013F3
004013D4  |.  8B56 5C       |MOV EDX,[ESI+5C]                        ;  将注册码首地址赋值给EDX
004013D7  |.  57            |PUSH EDI                                ;  EDI压栈
004013D8  |.  8A0417        |MOV AL,[EDI+EDX]                        ;  注册码首地址EDX+EDI为偏移地址处字符给AL
004013DB  |.  884424 10     |MOV [ESP+10],AL                         ;  将字符给ESP+10
004013DF  |.  8B4C24 10     |MOV ECX,[ESP+10]                        ;  字符给ECX
004013E3  |.  51            |PUSH ECX                                ;  ECX压栈
004013E4  |.  E8 97FFFFFF   |CALL 00401380                           ;  调模块 00401380(这里做运算比较)
-----------------------------------------------------------------------------------------------------------
00401380 模块功能:

00401380  /$  8B4424 08     MOV EAX,[ESP+8]                          ;  ESP+8 地址单元内容给EAX,实际上时上面EDI的值,偏移量(计数器)
00401384  |.  8A5424 04     MOV DL,[ESP+4]                           ;  esp+4地址单元BYTE内容给DL,实际上时上面传入的字符
00401388  |.  8A88 C0B04200 MOV CL,[EAX+42B0C0]                      ;  将42B0C0地址处偏移为EAX地址单元的BYTE给CL,注意这里是数组 12 2B 35 26 20 28 0A 22                          +5& (."
0040138E  |.  33C0          XOR EAX,EAX                              ;  EAX清零
00401390  |.  80F1 44       XOR CL,44                                ;  CL 异或44
00401393  |.  FEC9          DEC CL                                   ;  CL减1
00401395  |.  3AD1          CMP DL,CL                                ;  比较DL和CL
00401397  |.  0F94C0        SETE AL                                  ;  相等则AL =1

------------------------------------------------------------------------------------------------------------

004013E9  |.  83C4 08       |ADD ESP,8                               ;  栈平衡
004013EC  |.  85C0          |TEST EAX,EAX                            ;  测试EAX
004013EE  |.  74 1F         |JE SHORT 0040140F                       ;  等于0 则跳 0040140F
004013F0  |.  47            |INC EDI                                 ;  EDI加
004013F1  |.^ EB CC         \JMP SHORT 004013BF                      ;  跳到004013BF去,继续循环
004013F3  |>  85DB          TEST EBX,EBX                             ;  测试EBX
004013F5  |.  74 18         JE SHORT 0040140F                        ;  等于0 则跳0040140F,ERROR提示
004013F7  |.  6A 00         PUSH 0                                   ;  0压栈
004013F9  |.  68 F8B04200   PUSH 0042B0F8                            ;  "OK"字符压栈
004013FE  |.  68 E0B04200   PUSH 0042B0E0                            ;  恭喜 ,字符串压栈
00401403  |.  8BCE          MOV ECX,ESI
00401405  |.  E8 787E0100   CALL 00419282                            ;  调用MESSAGEBOXEXA
0040140A  |.  5F            POP EDI
0040140B  |.  5E            POP ESI
0040140C  |.  5B            POP EBX
0040140D  |.  59            POP ECX
0040140E  |.  C3            RET
0040140F  |>  6A 00         PUSH 0                                   ;  参数 0压栈
00401411  |.  68 D8B04200   PUSH 0042B0D8                            ;  ASCII "ERROR"
00401416  |.  68 CCB04200   PUSH 0042B0CC                            ;  "KEY不正确!" 压栈
0040141B  |.  8BCE          MOV ECX,ESI
0040141D  |.  E8 607E0100   CALL 00419282                            ;  条用MESSAGEBOXEXA
2009-5-16 22:33
0
雪    币: 217
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这个回复太好了,写的太详细了,太适合我等菜鸟学习了,感谢楼上的!!!
2009-5-17 00:07
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
UnpackMe
2009-5-17 02:22
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
先学习学习之
2009-5-17 10:25
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢,努力学习中。
2009-5-21 18:57
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
先去壳,一个shoooo的壳,一路F8就可以.
UnpackMe
算法:#include <stdio.h>
#include <windows.h>
main()
{
        int a[]={0x12,0x2B,0x35,0x26,0x20,0x28,0x0A,0x22};
        int tmp[100];
        for (int i=0;i<8;i++)
        {
                tmp[i]=a[i]^0x44;
                tmp[i]-=1;
        }
       
        for (int i=0;i<8;i++)
        {
                printf("%c",tmp[i]);
                                Sleep(500);
        }
}
DEV C++ 编译器成功
2009-5-22 19:42
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
还是先学好基础,在仔细看啊
2009-5-28 19:25
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
感谢上面的分析,学习学习了。
2009-5-28 19:44
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我也来学习学习~
2009-5-29 17:21
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17


8会追码啦!!
上传的附件:
2009-5-31 21:47
0
游客
登录 | 注册 方可回帖
返回
//