首页
社区
课程
招聘
[原创]一枚CrackMe分析
发表于: 2013-8-15 17:10 25284

[原创]一枚CrackMe分析

2013-8-15 17:10
25284

大牛都 在发驱动源码,而我连他们的源码都看不懂,

只会玩CrackMe,哪位好心的大牛收留我吧。

00401140  /[        DISCUZ_CODE_5        ]nbsp; 81EC C8000000 sub     esp, 0C8
00401146  |.  57            push    edi
00401147  |.  B9 09000000   mov     ecx, 9
0040114C  |.  33C0          xor     eax, eax
0040114E  |.  8D7C24 2D     lea     edi, dword ptr [esp+2D]
00401152  |.  C64424 2C 30  mov     byte ptr [esp+2C], 30
00401157  |.  68 70804000   push    00408070                         ;  请输入你的用户名啊:\n
0040115C  |.  F3:AB         rep     stos dword ptr es:[edi]
0040115E  |.  66:AB         stos    word ptr es:[edi]
00401160  |.  AA            stos    byte ptr es:[edi]
00401161  |.  E8 01010000   call    00401267                         ;  puts
00401166  |.  8D4424 58     lea     eax, dword ptr [esp+58]          ;  存放用户名的地址
0040116A  |.  50            push    eax
0040116B  |.  68 6C804000   push    0040806C                         ;  %s
00401170  |.  E8 DB000000   call    00401250                         ;  scanf
00401175  |.  68 54804000   push    00408054                         ;  请输入你的注册码啊:\n
0040117A  |.  E8 E8000000   call    00401267                         ;  puts
0040117F  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]          ;  存放注册码的地址
00401183  |.  51            push    ecx
00401184  |.  68 6C804000   push    0040806C                         ;  %s
00401189  |.  E8 C2000000   call    00401250                         ;  scanf
0040118E  |.  8D9424 940000>lea     edx, dword ptr [esp+94]
00401195  |.  8D4424 6C     lea     eax, dword ptr [esp+6C]          ;  取用户名
00401199  |.  52            push    edx
0040119A  |.  50            push    eax
0040119B  |.  E8 60FEFFFF   call    00401000                         ;  计算用户名长度并将用户名加密,加密其实就是把ascii换位
004011A0  |.  8D8C24 C40000>lea     ecx, dword ptr [esp+C4]
004011A7  |.  8D9424 9C0000>lea     edx, dword ptr [esp+9C]          ;  加密后的用户名
004011AE  |.  51            push    ecx
004011AF  |.  8D4424 78     lea     eax, dword ptr [esp+78]          ;  加密前的用户名
004011B3  |.  52            push    edx
004011B4  |.  50            push    eax
004011B5  |.  E8 96FEFFFF   call    00401050                         ;  进行第二次加密
004011BA  |.  8D4C24 58     lea     ecx, dword ptr [esp+58]
004011BE  |.  8D9424 D00000>lea     edx, dword ptr [esp+D0]          ;  第二次加密后的数据
004011C5  |.  51            push    ecx
004011C6  |.  8D8424 AC0000>lea     eax, dword ptr [esp+AC]          ;  第一次加密后的数据
004011CD  |.  52            push    edx
004011CE  |.  8D8C24 880000>lea     ecx, dword ptr [esp+88]          ;  原用户名
004011D5  |.  50            push    eax
004011D6  |.  51            push    ecx
004011D7  |.  E8 A4FEFFFF   call    00401080                         ;  再一次进行处理
004011DC  |.  8D7C24 40     lea     edi, dword ptr [esp+40]          ;  读取注册码
004011E0  |.  83C9 FF       or      ecx, FFFFFFFF
004011E3  |.  33C0          xor     eax, eax
004011E5  |.  83C4 3C       add     esp, 3C
004011E8  |.  F2:AE         repne   scas byte ptr es:[edi]           ;  读取注册码到一个数组
004011EA  |.  F7D1          not     ecx                              ;  其实就是计算注册码长度
004011EC  |.  49            dec     ecx
004011ED  |.  5F            pop     edi
004011EE  |.  85C9          test    ecx, ecx
004011F0  |.  7E 0F         jle     short 00401201
004011F2  |>  8A5404 00     /mov     dl, byte ptr [esp+eax]          ;  依次读取注册码
004011F6  |.  FEC2          |inc     dl
004011F8  |.  885404 00     |mov     byte ptr [esp+eax], dl          ;  注册码ascii加 1
004011FC  |.  40            |inc     eax
004011FD  |.  3BC1          |cmp     eax, ecx
004011FF  |.^ 7C F1         \jl      short 004011F2
00401201  |>  8D5424 00     lea     edx, dword ptr [esp]
00401205  |.  8D4424 28     lea     eax, dword ptr [esp+28]
00401209  |.  52            push    edx
0040120A  |.  50            push    eax
0040120B  |.  E8 F0FEFFFF   call    00401100
00401210  |.  83C4 08       add     esp, 8
00401213  |.  83F8 01       cmp     eax, 1
00401216  |.  75 19         jnz     short 00401231
00401218  |.  68 40804000   push    00408040                         ;  你输入的是真码:
0040121D  |.  E8 45000000   call    00401267
00401222  |.  83C4 04       add     esp, 4
00401225  |.  E8 7C580000   call    00406AA6
0040122A  |.  81C4 C8000000 add     esp, 0C8
00401230  |.  C3            retn
00401231  |>  68 30804000   push    00408030                         ;  你要努力啊~:
00401236  |.  E8 2C000000   call    00401267
0040123B  |.  83C4 04       add     esp, 4
0040123E  |.  E8 63580000   call    00406AA6
00401243  |.  81C4 C8000000 add     esp, 0C8
00401249  \.  C3            retn
00401000  /[        DISCUZ_CODE_19        ]nbsp; 53            push    ebx
00401001  |.  57            push    edi
00401002  |.  8B7C24 0C     mov     edi, dword ptr [esp+C]           ;  edi=用户名
00401006  |.  33DB          xor     ebx, ebx
00401008  |.  8A07          mov     al, byte ptr [edi]               ;  测试第一个字符是否为空
0040100A  |.  84C0          test    al, al
0040100C  |.  74 3D         je      short 0040104B
0040100E  |.  56            push    esi
0040100F  |.  8B7424 14     mov     esi, dword ptr [esp+14]          ;  data
00401013  |>  0FBEC0        /movsx   eax, al
00401016  |.  8BC8          |mov     ecx, eax
00401018  |.  81E1 0F000080 |and     ecx, 8000000F
0040101E  |.  79 05         |jns     short 00401025                  ;  判断 是否为正数
00401020  |.  49            |dec     ecx
00401021  |.  83C9 F0       |or      ecx, FFFFFFF0
00401024  |.  41            |inc     ecx
00401025  |>  99            |cdq
00401026  |.  83E2 0F       |and     edx, 0F                         ;  交换ascii的值,如56变65
00401029  |.  03C2          |add     eax, edx
0040102B  |.  C0E1 04       |shl     cl, 4                           ;  左移4位
0040102E  |.  C1F8 04       |sar     eax, 4                          ;  右移4位
00401031  |.  02C8          |add     cl, al                          ;  相加
00401033  |.  880E          |mov     byte ptr [esi], cl
00401035  |.  79 04         |jns     short 0040103B                  ;  判断是否为正数
00401037  |.  F6D9          |neg     cl                              ;  不为正数则取反加1
00401039  |.  880E          |mov     byte ptr [esi], cl              ;  存放起来
0040103B  |>  8A47 01       |mov     al, byte ptr [edi+1]            ;  继续取下一位
0040103E  |.  47            |inc     edi
0040103F  |.  46            |inc     esi
00401050  /[        DISCUZ_CODE_20        ]nbsp; 57            push    edi
00401051  |.  8B7C24 08     mov     edi, dword ptr [esp+8]           ;  edi=用户名
00401055  |.  8A0F          mov     cl, byte ptr [edi]               ;  取第一位判断是否为空
00401057  |.  84C9          test    cl, cl
00401059  |.  74 20         je      short 0040107B                   ;  若第一位为空则退出这个计算
0040105B  |.  8B5424 10     mov     edx, dword ptr [esp+10]
0040105F  |.  56            push    esi
00401060  |.  8B7424 10     mov     esi, dword ptr [esp+10]          ;  取加密后的用户名
00401064  |>  8A06          /mov     al, byte ptr [esi]
00401066  |.  32C1          |xor     al, cl                          ;  与加密前的用户名进行异或运算
00401068  |.  8802          |mov     byte ptr [edx], al
0040106A  |.  7F 04         |jg      short 00401070                  ;  判断是否小于等于0
0040106C  |.  04 60         |add     al, 60                          ;  如果是,则加上0x60
0040106E  |.  8802          |mov     byte ptr [edx], al              ;  取放得到 的数据
00401070  |>  8A4F 01       |mov     cl, byte ptr [edi+1]            ;  继续取下一位数据
00401073  |.  47            |inc     edi
00401074  |.  46            |inc     esi
00401075  |.  42            |inc     edx

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 5
支持
分享
最新回复 (20)
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
稍微复杂点的CrackMe都玩不明白的纯水货 路过
求楼主指点
2013-8-15 17:32
0
雪    币: 62
活跃值: (971)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
nice
2013-8-15 17:33
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看不懂算法的路过
2013-8-15 20:19
0
雪    币: 19
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
return 0;
2013-8-15 20:29
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
6
哦,忘了返回一个值了。
2013-8-15 21:23
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
7
若哪里没写明白,欢迎提出来。。
2013-8-15 21:25
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
CRACKME大神 哈哈哈
2013-8-15 22:09
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
+1
2013-8-15 22:15
0
雪    币: 2063
活跃值: (1752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE][/QUOTE]
2013-8-16 07:14
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我也是刚学的,顶楼主!
2013-8-16 19:47
0
雪    币: 11075
活跃值: (17602)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
来支持一下楼主发表帖子
2013-8-17 15:29
0
雪    币: 680
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
前排一个
2013-8-17 19:55
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个比较简单,还能明白要是稍微复杂点的就
所以说求楼主指点,求带
2013-8-17 21:44
0
雪    币: 116
活跃值: (305)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
涛哥最近高产啊,跟你学了。
2013-8-18 19:48
0
雪    币: 198
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
混了好长时间了,也就只会欺负一些简单的CrackMe,唉唉唉
最近很长时间都没认真学点东西了,向楼主学习!
2013-8-19 12:31
0
雪    币: 35
活跃值: (139)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
17
楼主最近高产,
2013-8-19 22:38
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
18
汗。都 是些简单的,大牛莫笑。
2013-8-19 23:09
0
雪    币: 645
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
顶大牛 好文章 菜鸟飞过
2013-8-21 15:36
0
雪    币: 6386
活跃值: (3475)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
介绍全面,最后作出注册机。
2013-8-22 08:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
oyoyoyoy
2013-8-26 10:32
0
游客
登录 | 注册 方可回帖
返回
//