易木马 发表于 2015-7-28 16:44

[CrackMe] 新手出炉的cm 各位赏个脸 追码

CM地址:
      https://www.52hb.com/thread-12661-1-1.html
作者:易木马
级别:【只适合新手】
这下面是我的分析记录,看不明白的,可以下载后面的视频,超详细。大神不要来了!!!
不管直接运行
OEP 附近
很简单吧
没有的哈
00401000   . 33C0         XOR EAX,EAX
00401002   . C3             RETN
易语言
直接往下翻。
一般都是上调用上面的
00401171|. 8BEC         MOV EBP,ESP
00401173|. 81EC 08000000SUB ESP,0x8
00401179|. C745 FC 000000>MOV DWORD PTR SS:,0x0
大概是易语言的按钮事件了
******************************
00401180|. B8 29094800    MOV EAX,cm2.00480929                     ;给EAX,赋值,但是一个固定的值
00401185|. 33C9         XOR ECX,ECX
00401187|. 85C0         TEST EAX,EAX                           ;EAX是不可能为零的
00401189|. 74 03          JE SHORT cm2.0040118E
0040118B|. 8B48 04      MOV ECX,DWORD PTR DS:         ;取真实密码的长度
*************************注意这一段***********
00401193|. A1 B0454A00    MOV EAX,DWORD PTR DS:          ;给EAX,赋值,但是一个可变的值,是由内存分配的一个变量地址
00401198|. 33DB         XOR EBX,EBX
0040119A|. 85C0         TEST EAX,EAX
0040119C|. 74 03          JE SHORT cm2.004011A1
0040119E|. 8B58 04      MOV EBX,DWORD PTR DS:         ;这里和上面是重复的
004011A1|> 83C0 08      ADD EAX,0x8                              ;于是我猜,这里是我们的假注册的长度

因此可以得知长度为7
网上的各种改,大家可以试一下。
004011A7|. B8 01000000   MOV EAX,0x1
004011AC|. 75 0A         JNZ SHORT cm2.004011B8                   ;按回车,我们去看一下。
004011AE|. 48            DEC EAX
004011AF|. 85C9            TEST ECX,ECX
这里的三行只要保证EAX=0就OK
我们进关键的CALL去看一下
这个时候我们来看看他是什么
004809316C 69 6B 65 5F 79 75 01like_yu
like_yu,刚好7位。
***************算法CALL***************
004010C4/$ 8B4424 0C       MOV EAX,DWORD PTR SS:         ;算法CALL
004010C8|. 85C0            TEST EAX,EAX
004010CA|. 74 44         JE SHORT cm2.00401110
004010CC|. 8B5424 04       MOV EDX,DWORD PTR SS:
004010D0|. 56            PUSH ESI
004010D1|. 57            PUSH EDI
004010D2|. 8BF2            MOV ESI,EDX
004010D4|. 8B7C24 10       MOV EDI,DWORD PTR SS:
004010D8|. 0BD7            OR EDX,EDI
004010DA|. 83E2 03         AND EDX,0x3
004010DD|. 74 32         JE SHORT cm2.00401111
004010DF|. A9 01000000   TEST EAX,0x1                           ;看到了吗,这里是1为结束标识,
004010E4|. 74 0B         JE SHORT cm2.004010F1                  ;不管他
004010E6|. 8A0E            MOV CL,BYTE PTR DS:               ;这里开始比较 【假码】
004010E8|. 3A0F            CMP CL,BYTE PTR DS:               ;真码
004010EA|. 75 52         JNZ SHORT cm2.0040113E                   ;直接结束
004010EC|. 46            INC ESI                                  ;1.
004010ED|. 47            INC EDI                                  ;2.取下一个字符
004010EE|. 48            DEC EAX                                  ;修改变量
004010EF|. 74 1D         JE SHORT cm2.0040110E                  ;第 一个字符相等才进入下一环节
004010F1|> 8A0E            /MOV CL,BYTE PTR DS:                ;第一次,第二个字符
004010F3|. 8A17            |MOV DL,BYTE PTR DS:
004010F5|. 3ACA            |CMP CL,DL
004010F7|. 75 45         |JNZ SHORT cm2.0040113E                  ;结束
004010F9|. 8A4E 01         |MOV CL,BYTE PTR DS:
004010FC|. 8A57 01         |MOV DL,BYTE PTR DS:            ;第一次第三个字符
004010FF|. 3ACA            |CMP CL,DL
00401101|. 75 3B         |JNZ SHORT cm2.0040113E                  ;结束
00401103|. 83C7 02         |ADD EDI,0x2
00401106|. 83C6 02         |ADD ESI,0x2
00401109|. 83E8 02         |SUB EAX,0x2                           ;修改变量,一次比较两个字符,所以加2
0040110C|.^75 E3         \JNZ SHORT cm2.004010F1
0040110E|> 5F            POP EDI                                  ;到这里算法也就结束了。
0040110F|. 5E            POP ESI                                  ;成功到这里,我们就对啦!
00401110|> C3            RETN                                     ;都相等了,注意EAX=0
************************易语言的按钮事件(顶层)*************
00401180|. B8 29094800   MOV EAX,cm2.00480929                     ;给EAX,赋值,但是一个固定的值
00401185|. 33C9            XOR ECX,ECX
00401187|. 85C0            TEST EAX,EAX                           ;EAX是不可能为零的
00401189|. 74 03         JE SHORT cm2.0040118E
0040118B|. 8B48 04         MOV ECX,DWORD PTR DS:         ;取真实密码的长度
0040118E|> 51            PUSH ECX
0040118F|. 83C0 08         ADD EAX,0x8
00401192|. 50            PUSH EAX
00401193|. A1 B0454A00   MOV EAX,DWORD PTR DS:          ;给EAX,赋值,但是一个可变的值,是由内存分配的一个变量地址
00401198|. 33DB            XOR EBX,EBX
0040119A|. 85C0            TEST EAX,EAX
0040119C|. 74 03         JE SHORT cm2.004011A1
0040119E|. 8B58 04         MOV EBX,DWORD PTR DS:         ;这里和上面是重复的
004011A1|> 83C0 08         ADD EAX,0x8                              ;于是我猜,这里是我们的假注册的长度
004011A4|. 50            PUSH EAX
004011A5|. 3BD9            CMP EBX,ECX                              ;真码与假码长度的比较
004011A7|. B8 01000000   MOV EAX,0x1
004011AC|. 75 0A         JNZ SHORT cm2.004011B8                   ;按回车,我们去看一下。
004011AE|. 48            DEC EAX
004011AF|. 85C9            TEST ECX,ECX
004011B1|. 74 05         JE SHORT cm2.004011B8                  ;要跳过去前提下是ECX=0,这里EAX=0
004011B3|. E8 0CFFFFFF   CALL cm2.004010C4                        ;关注 一下
004011B8|> 83C4 0C         ADD ESP,0xC                              ;到这
004011BB|. 85C0            TEST EAX,EAX                           ;如果是假的跳转过来,注意,EAX不为0
004011BD|. 0F85 36000000   JNZ cm2.004011F9
004011C3|. B8 38094800   MOV EAX,cm2.00480938
004011C8|. 85C0            TEST EAX,EAX
004011CA|. 74 13         JE SHORT cm2.004011DF                  ;说明这下面是成功的提示
004011CC|. 50            PUSH EAX                                 ;开始
004011CD|. 8B40 04         MOV EAX,DWORD PTR DS:
004011D0|. 83C0 08         ADD EAX,0x8
004011D3|. 50            PUSH EAX
004011D4|. E8 92010000   CALL cm2.0040136B
004011D9|. 59            POP ECX
004011DA|. 5E            POP ESI
004011DB|. 8BF8            MOV EDI,EAX
004011DD|. F3:A4         REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
004011DF|> 50            PUSH EAX
004011E0|. 8B5D FC         MOV EBX,DWORD PTR SS:
004011E3|. 85DB            TEST EBX,EBX
004011E5|. 74 09         JE SHORT cm2.004011F0
004011E7|. 53            PUSH EBX
004011E8|. E8 66010000   CALL cm2.00401353
004011ED|. 83C4 04         ADD ESP,0x4
004011F0|> 58            POP EAX
004011F1|. 8945 FC         MOV DWORD PTR SS:,EAX         ;结束
004011F4|. E9 31000000   JMP cm2.0040122A
004011F9|> B8 48094800   MOV EAX,cm2.00480948                     ;就跳走了
004011FE|. 85C0            TEST EAX,EAX
00401200|. 74 13         JE SHORT cm2.00401215                  ;开始
00401202|. 50            PUSH EAX                                 ;相反这下面是失败的说明
00401203|. 8B40 04         MOV EAX,DWORD PTR DS:
00401206|. 83C0 08         ADD EAX,0x8
00401209|. 50            PUSH EAX
0040120A|. E8 5C010000   CALL cm2.0040136B
0040120F|. 59            POP ECX
00401210|. 5E            POP ESI
00401211|. 8BF8            MOV EDI,EAX
00401213|. F3:A4         REP MOVS BYTE PTR ES:,BYTE PTR DS:[>
00401215|> 50            PUSH EAX
00401216|. 8B5D FC         MOV EBX,DWORD PTR SS:
00401219|. 85DB            TEST EBX,EBX
0040121B|. 74 09         JE SHORT cm2.00401226
0040121D|. 53            PUSH EBX
0040121E|. E8 30010000   CALL cm2.00401353                        ;于是我猜,一种是注册的成功一个是失败
00401223|. 83C4 04         ADD ESP,0x4
00401226|> 58            POP EAX                                  ;结束,又是两段重复的代码
好啦!!我是易木马(DevilMayCry)xuepojie.com.再见!!
KEY:like_yu


超详细的视频出炉,(大神绕道):



亿联网络 发表于 2015-7-28 19:17

咋没人抢沙发呢前排支持楼主

botanycc 发表于 2015-7-28 21:12

看看,支持一个

tony2526 发表于 2015-7-29 07:57

很详细哦,真心不错,赞一个

冷瞳 发表于 2015-7-29 22:31

{:5_188:}真心不错 赞楼主一个

易木马 发表于 2015-8-5 10:42

没有几个捧场,自我欣赏

Like 发表于 2015-8-6 08:58

楼主厉害,{:5_118:}

小峰 发表于 2015-8-7 01:14

{:5_117:}占个楼,感谢分享
页: [1]
查看完整版本: [CrackMe] 新手出炉的cm 各位赏个脸 追码