首页
社区
课程
招聘
[旧帖] [求助]新人求教OD入门小问题 0.00雪花
发表于: 2010-9-16 15:05 1441

[旧帖] [求助]新人求教OD入门小问题 0.00雪花

2010-9-16 15:05
1441
00440F2F |. BA 14104400 MOV EDX,CrackMe3.00441014 ; ASCII "Registered User"

00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 关键,要用F7跟进去

00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C ; 这里跳走就完蛋

00440F3B |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]

00440F3E |. 8B83 C8020000 MOV EAX,DWORD PTR DS:[EBX+2C8]

00440F44 |. E8 D7FEFDFF CALL CrackMe3.00420E20

00440F49 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00440F4C |. BA 2C104400 MOV EDX,CrackMe3.0044102C ; ASCII "GFX-754-IER-954"

00440F51 |. E8 D62BFCFF CALL CrackMe3.00403B2C ; 关键,要用F7跟进去

00440F56 |. 75 1A JNZ SHORT CrackMe3.00440F72 ; 这里跳走就完蛋

00440F58 |. 6A 00 PUSH 0

00440F5A |. B9 3C104400 MOV ECX,CrackMe3.0044103C ; ASCII "CrackMe cracked successfully"

00440F5F |. BA 5C104400 MOV EDX,CrackMe3.0044105C ; ASCII "Congrats! You cracked this CrackMe!"

00440F64 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]

00440F69 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]

00440F6B |. E8 F8C0FFFF CALL CrackMe3.0043D068

00440F70 |. EB 32 JMP SHORT CrackMe3.00440FA4

00440F72 |> 6A 00 PUSH 0

00440F74 |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII "Beggar off!"

00440F79 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!"

00440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]

00440F83 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]

00440F85 |. E8 DEC0FFFF CALL CrackMe3.0043D068

00440F8A |. EB 18 JMP SHORT CrackMe3.00440FA4

00440F8C |> 6A 00 PUSH 0

00440F8E |. B9 80104400 MOV ECX,CrackMe3.00441080 ; ASCII "Beggar off!"

00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!"

00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44]

00440F9D |. 8B00 MOV EAX,DWORD PTR DS:[EAX]

00440F9F |. E8 C4C0FFFF CALL CrackMe3.0043D068

大家注意看一下上面的注释,我在上面标了两个关键点。有人可能要问,你怎么知道那两个地方是关键点?其实很简单,我是根据查看是哪条指令跳到“wrong serial,try again”这条字串对应的指令来决定的。如果你在 调试选项->CPU 标签中把“显示跳转路径”及其下面的两个“如跳转未实现则显示灰色路径”、“显示跳转到选定命令的路径”都选上的话,就会看到是从什么地方跳到出错字串处的:

请问上文中(我是根据查看是哪条指令跳到“wrong serial,try again”这条字串对应的指令来决定的)一句,ASCII "Wrong Serial,try again!跟00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 这条有什么必然后联系,该怎么分析?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C ; 关键,要用F7跟进去

00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C ; 这里跳走就完蛋
下边这句跳转是根据上边的call语句返回的结果来决定是否跳转的,结果不等于0就跳转到下边出错的地方,所以要重点分析call里面的语句。

或者直接NOP掉00440F39 |. 75 51 JNZ SHORT CrackMe3.00440F8C

或者改成00440F39 |. 74 51 JZ SHORT CrackMe3.00440F8C 就是call返回的结果等于0时再跳转
我也刚开始学习,不知道分析的正确不,
2010-9-16 16:52
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我是想问是怎么根据出错信息00440F93 |. BA 8C104400 MOV EDX,CrackMe3.0044108C ; ASCII "Wrong Serial,try again!"来判定这一句的
00440F2F |. BA 14104400 MOV EDX,CrackMe3.00441014 ; ASCII "Registered User"

00440F34 |. E8 F32BFCFF CALL CrackMe3.00403B2C
2010-9-16 17:10
0
游客
登录 | 注册 方可回帖
返回
//