|
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 08000000 SUB ESP,0x8
00401179 |. C745 FC 000000>MOV DWORD PTR SS:[EBP-0x4],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:[EAX+0x4] ; 取真实密码的长度
*************************注意这一段***********
00401193 |. A1 B0454A00 MOV EAX,DWORD PTR DS:[0x4A45B0] ; 给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:[EAX+0x4] ; 这里和上面是重复的
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去看一下
这个时候我们来看看他是什么
00480931 6C 69 6B 65 5F 79 75 01 like_yu
like_yu,刚好7位。
***************算法CALL***************
004010C4 /$ 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+0xC] ; 算法CALL
004010C8 |. 85C0 TEST EAX,EAX
004010CA |. 74 44 JE SHORT cm2.00401110
004010CC |. 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+0x4]
004010D0 |. 56 PUSH ESI
004010D1 |. 57 PUSH EDI
004010D2 |. 8BF2 MOV ESI,EDX
004010D4 |. 8B7C24 10 MOV EDI,DWORD PTR SS:[ESP+0x10]
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:[ESI] ; 这里开始比较 【假码】
004010E8 |. 3A0F CMP CL,BYTE PTR DS:[EDI] ; 真码
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:[ESI] ; 第一次,第二个字符
004010F3 |. 8A17 |MOV DL,BYTE PTR DS:[EDI]
004010F5 |. 3ACA |CMP CL,DL
004010F7 |. 75 45 |JNZ SHORT cm2.0040113E ; 结束
004010F9 |. 8A4E 01 |MOV CL,BYTE PTR DS:[ESI+0x1]
004010FC |. 8A57 01 |MOV DL,BYTE PTR DS:[EDI+0x1] ; 第一次第三个字符
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:[EAX+0x4] ; 取真实密码的长度
0040118E |> 51 PUSH ECX
0040118F |. 83C0 08 ADD EAX,0x8
00401192 |. 50 PUSH EAX
00401193 |. A1 B0454A00 MOV EAX,DWORD PTR DS:[0x4A45B0] ; 给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:[EAX+0x4] ; 这里和上面是重复的
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:[EAX+0x4]
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:[EDI],BYTE PTR DS:[>
004011DF |> 50 PUSH EAX
004011E0 |. 8B5D FC MOV EBX,DWORD PTR SS:[EBP-0x4]
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:[EBP-0x4],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:[EAX+0x4]
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:[EDI],BYTE PTR DS:[>
00401215 |> 50 PUSH EAX
00401216 |. 8B5D FC MOV EBX,DWORD PTR SS:[EBP-0x4]
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
超详细的视频出炉,(大神绕道):
7.zip
(12.41 MB, 下载次数: 138)
|
评分
-
参与人数 13 | 威望 +1 |
HB +44 |
THX +11 |
收起
理由
|
zxjzzh
| |
+ 2 |
|
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
消逝的过去
| |
|
+ 1 |
|
agan8888
| |
|
+ 1 |
|
EMT
| |
+ 1 |
+ 1 |
|
king51999
| |
+ 1 |
|
[吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩! |
playboy
| |
|
+ 1 |
|
Like
| |
+ 1 |
+ 1 |
厉害,赞一个 |
yuyan123
| |
+ 5 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
tony2526
| |
+ 3 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
xdr
| |
+ 3 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
虚竹
| |
+ 5 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
923004243
| |
+ 3 |
+ 1 |
很详细谢谢 |
Shark恒
| + 1 |
+ 20 |
+ 1 |
评分=感恩!简单却充满爱!感谢您的作品! |
查看全部评分
|