[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
超详细的视频出炉,(大神绕道):
咋没人抢沙发呢前排支持楼主 看看,支持一个 很详细哦,真心不错,赞一个 {:5_188:}真心不错 赞楼主一个 没有几个捧场,自我欣赏 楼主厉害,{:5_118:} {:5_117:}占个楼,感谢分享
页:
[1]