首页
社区
课程
招聘
[讨论]关于第一节 常见保护技巧中的chap6-1-1-09问题
发表于: 2009-9-8 22:41 3934

[讨论]关于第一节 常见保护技巧中的chap6-1-1-09问题

2009-9-8 22:41
3934
这是看雪上的答案:
破解chap6-1-1-09
我并没看懂他是如何处理我输入的名字的。但也破了。
我输入的名字是:ZXEMZX
        密码是:123456

:0042DCB2 A360F74200              mov dword ptr [0042F760], eax
:0042DCB7 A158F74200              mov eax, dword ptr [0042F758]
:0042DCBC 3B0560F74200            cmp eax, dword ptr [0042F760]    ----比较(1)
:0042DCC2 7517                    jne 0042DCDB
:0042DCC4 6A00                    push 00000000
:0042DCC6 668B0D1CDD4200          mov cx, word ptr [0042DD1C]
:0042DCCD B202                    mov dl, 02

* Possible StringData Ref from Code Obj ->"Good Serial, Thanks For trying "
                                        ->"this Crackme

我在(1)中看见了0042F760中放着1E240,这个就是123456的16进制。
而EAX中为31D4B070,所以真确的密码为836022384。
                    
                                    ZXEM 2000.3.23


我输入上述的name和code却不能正确注册成功的

自己从新跟了下,正确的应该是:name:ZXEMZX
                                             code: 1901601620

破解流程:0042DBD0  |> /8D55 FC       /LEA EDX,DWORD PTR SS:[EBP-4]         ;  0012f9ac中存放着name
0042DBD3  |. |8B83 E0010000 |MOV EAX,DWORD PTR DS:[EBX+1E0]
0042DBD9  |. |E8 4AC6FEFF   |CALL CRKME4.0041A228
0042DBDE  |. |8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]         ;  将name传送到EAX
0042DBE1  |. |8B16          |MOV EDX,DWORD PTR DS:[ESI]           ;  edx置2
0042DBE3     |0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]     ;  将name第edx-1位送入eax
0042DBE8  |. |8D55 F8       |LEA EDX,DWORD PTR SS:[EBP-8]
0042DBEB  |. |E8 8889FDFF   |CALL CRKME4.00406578
0042DBF0  |. |8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]         ;  ASCII‘110’到edx
0042DBF3  |. |8BC7          |MOV EAX,EDI
0042DBF5  |. |E8 CE5BFDFF   |CALL CRKME4.004037C8
0042DBFA  |. |FF06          |INC DWORD PTR DS:[ESI]
0042DBFC  |. |833E 07       |CMP DWORD PTR DS:[ESI],7
0042DBFF  |.^\75 CF         \JNZ SHORT CRKME4.0042DBD0            ;  name循环处理,做什么?
0042DC01  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]          ;  0012f9a8存放着“101“
0042DC04  |.  50            PUSH EAX                              ;  eax入
0042DC05  |.  B9 03000000   MOV ECX,3
0042DC0A  |.  BA 01000000   MOV EDX,1
0042DC0F  |.  8B07          MOV EAX,DWORD PTR DS:[EDI]            ;  将ASCII”11011897100101“送入eax
0042DC11  |.  E8 AE5DFDFF   CALL CRKME4.004039C4                  ;  不知道进行怎样的处理,有可能要跟进
0042DC16  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]          ;  eax置”110“
0042DC19  |.  E8 8A89FDFF   CALL CRKME4.004065A8
0042DC1E  |.  A3 58F74200   MOV DWORD PTR DS:[42F758],EAX         ;  110的16进制是6e,eax=6e,这个内存地址很重要,后面比较存放着真的注册码
0042DC23  |.  8BC7          MOV EAX,EDI
0042DC25  |.  E8 1A59FDFF   CALL CRKME4.00403544
0042DC2A  |.  8BC3          MOV EAX,EBX
0042DC2C  |.  E8 B3FCFFFF   CALL CRKME4.0042D8E4
0042DC31  |.  A1 50F74200   MOV EAX,DWORD PTR DS:[42F750]         ;  EBA3AF54
0042DC36  |.  A3 50F74200   MOV DWORD PTR DS:[42F750],EAX
0042DC3B  |.  8BC3          MOV EAX,EBX
0042DC3D  |.  E8 F2FCFFFF   CALL CRKME4.0042D934
0042DC42  |.  A1 58F74200   MOV EAX,DWORD PTR DS:[42F758]
0042DC47  |.  A3 58F74200   MOV DWORD PTR DS:[42F758],EAX         ;  完全可以nop掉
0042DC4C  |.  8BC3          MOV EAX,EBX
0042DC4E  |.  E8 35FDFFFF   CALL CRKME4.0042D988                  ;  eax换算
0042DC53  |.  8BC3          MOV EAX,EBX
0042DC55  |.  E8 7EFDFFFF   CALL CRKME4.0042D9D8                  ;  eax换算
0042DC5A  |.  A1 58F74200   MOV EAX,DWORD PTR DS:[42F758]
0042DC5F  |.  A3 58F74200   MOV DWORD PTR DS:[42F758],EAX         ;  nop
0042DC64  |.  8BC3          MOV EAX,EBX
0042DC66  |.  E8 B1FDFFFF   CALL CRKME4.0042DA1C                  ;  eax换算
0042DC6B  |.  8BC3          MOV EAX,EBX
0042DC6D  |.  E8 B6FDFFFF   CALL CRKME4.0042DA28                  ;  eax换算
0042DC72  |.  A1 58F74200   MOV EAX,DWORD PTR DS:[42F758]
0042DC77  |.  A3 58F74200   MOV DWORD PTR DS:[42F758],EAX
0042DC7C  |.  8BC3          MOV EAX,EBX
0042DC7E  |.  E8 B1FDFFFF   CALL CRKME4.0042DA34
0042DC83  |.  8BC3          MOV EAX,EBX
0042DC85  |.  E8 F2FDFFFF   CALL CRKME4.0042DA7C
0042DC8A  |.  8BC3          MOV EAX,EBX
0042DC8C  |.  E8 0BFEFFFF   CALL CRKME4.0042DA9C
0042DC91  |.  A1 50F74200   MOV EAX,DWORD PTR DS:[42F750]
0042DC96  |.  0105 58F74200 ADD DWORD PTR DS:[42F758],EAX
0042DC9C  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]          ;  edx指向name
0042DC9F  |.  8B83 E4010000 MOV EAX,DWORD PTR DS:[EBX+1E4]
0042DCA5  |.  E8 7EC5FEFF   CALL CRKME4.0041A228
0042DCAA  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]          ;  eax存放code
0042DCAD  |.  E8 F688FDFF   CALL CRKME4.004065A8                  ;  关键的call了
0042DCB2  |.  A3 60F74200   MOV DWORD PTR DS:[42F760],EAX         ;  eax中为假的code
0042DCB7  |.  A1 58F74200   MOV EAX,DWORD PTR DS:[42F758]         ;  将E46E1B54送到eax中参与下面的比较,前面在哪出现过?
0042DCBC  |.  3B05 60F74200 CMP EAX,DWORD PTR DS:[42F760]       eax中为注册码
0042DCC2      75 17         JNZ SHORT CRKME4.0042DCDB
0042DCC4  |.  6A 00         PUSH 0                                ; /Arg1 = 00000000
0042DCC6  |.  66:8B0D 1CDD4>MOV CX,WORD PTR DS:[42DD1C]           ; |

我输入的name:invade
        code:123456
最后在比较的eax中查看:有符号数是:3832421204
                                    无符号数是:-462546092

正确的注册码为:-462546092

最先把3832421204输入注册不成功
怎么想也不知道是怎么回事,明明在eax中
然后把看雪上的答案输入试了下,也不行,才想到有可能是无符号数
输入-462546092
注册成功。。。。。

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我真想看懂啊!
2009-9-9 12:03
0
游客
登录 | 注册 方可回帖
返回
//