首页
社区
课程
招聘
[原创]第二部分比赛[第三回]CrackMe破解提交
2009-9-9 15:55 3510

[原创]第二部分比赛[第三回]CrackMe破解提交

2009-9-9 15:55
3510
注册看雪很多年,依然是菜鸟。这两天大赛,看了不少大侠的表演,不停的膜拜。深受启发。闲着总是闲着。是谁说的,大侠们玩技术,菜鸟玩收藏!呵呵,不想,今天遇上个咱能蒙混对付的。因为是蒙混过关,本不想提交,虚荣心作祟,破文一篇,以示存在!
一、查壳    无壳
三、试运行  发现三个关键字串:密码有问题!;用户名不能为空
四、OD载入
  1、试着看了下字符串参考,居然有发现?不会是假的吧?试试吧,反正其他咱也不会。
  2、接下来好办了。按老师说的改跳转指令。到下面这个地方不就行了。
00401BDA   > \8D4B 64       LEA ECX,DWORD PTR DS:[EBX+64]
00401BDD   .  68 B0604100   PUSH CrackMe.004160B0                    ;  恭喜你!
00401BE2   .  51            PUSH ECX
00401BE3   .  E8 7F6C0000   CALL CrackMe.00408867
00401BE8   .  83C4 08       ADD ESP,8
00401BEB   .  8BCB          MOV ECX,EBX
00401BED   .  6A 00         PUSH 0
00401BEF   .  E8 A4AA0000   CALL CrackMe.0040C698
00401BF4      8B5424 18     MOV EDX,DWORD PTR SS:[ESP+18]
00401BF8   .  52            PUSH EDX
00401BF9   .  E8 EB7C0000   CALL CrackMe.004098E9
00401BFE   .  8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]
00401C02   .  50            PUSH EAX
00401C03   .  E8 E17C0000   CALL CrackMe.004098E9
00401C08   .  8B8C24 B40000>MOV ECX,DWORD PTR SS:[ESP+B4]
00401C0F   .  51            PUSH ECX
00401C10   .  E8 D47C0000   CALL CrackMe.004098E9
00401C15   .  8B5424 20     MOV EDX,DWORD PTR SS:[ESP+20]

程序都按流程执行,那当然是从上面往下改了:
004018A6   > \8D56 FE       LEA EDX,DWORD PTR DS:[ESI-2]
004018A9   .  B8 56555555   MOV EAX,55555556
004018AE   .  F7EA          IMUL EDX
004018B0   .  8BC2          MOV EAX,EDX
004018B2   .  C1E8 1F       SHR EAX,1F
004018B5   .  03D0          ADD EDX,EAX
004018B7   .  8BEA          MOV EBP,EDX
004018B9   .  3BE9          CMP EBP,ECX
004018BB   .  74 1F         JE SHORT CrackMe.004018DC                   ;这里改为JMP 00401BDA
004018BD   .  8D4B 64       LEA ECX,DWORD PTR DS:[EBX+64]
004018C0   .  68 B8604100   PUSH CrackMe.004160B8                    ;  密码有问题!
004018C5   .  51            PUSH ECX
004018C6   .  E8 9C6F0000   CALL CrackMe.00408867
004018CB   .  83C4 08       ADD ESP,8
004018CE   .  8BCB          MOV ECX,EBX
004018D0   .  6A 00         PUSH 0
004018D2   .  E8 C1AD0000   CALL CrackMe.0040C698
004018D7   . /E9 6A030000   JMP CrackMe.00401C46
004018DC   > |A1 58624100   MOV EAX,DWORD PTR DS:[416258]
004018E1   . |8D542D 00     LEA EDX,DWORD PTR SS:[EBP+EBP]

试运行,居然出现内存读取错误。怎么回事呢?
用OD跟跟看吧。往远点看,就在“恭喜你”那个地方下个断试试。跑到00401BEF 处也没出现撒子错误,那看来是后面还有猫腻。
晕,这时看海风大侠已经都爆破了。我晕,狂人啊。呵呵,于是想到个阴招。
看到004018D7那里的JMP没有,反正这大赛就是要出注册信息就行了,又没一定要求不损失功能,呵呵,那把00401BF4改为004018D7的JMP不就行了。哈哈!

两个地方改后:
第一处:
004018B7   .  8BEA          MOV EBP,EDX
004018B9   .  3BE9          CMP EBP,ECX
004018BB      E9 1A030000   JMP CrackMe.00401BDA
004018C0      68 B8604100   PUSH CrackMe.004160B8                    ;  密码有问题!
004018C5      51            PUSH ECX
004018C6   .  E8 9C6F0000   CALL CrackMe.00408867

第二处:

00401BDA   > \8D4B 64       LEA ECX,DWORD PTR DS:[EBX+64]
00401BDD   .  68 B0604100   PUSH CrackMe.004160B0                    ;  恭喜你!
00401BE2   .  51            PUSH ECX
00401BE3   .  E8 7F6C0000   CALL CrackMe.00408867
00401BE8   .  83C4 08       ADD ESP,8
00401BEB   .  8BCB          MOV ECX,EBX
00401BED   .  6A 00         PUSH 0
00401BEF   .  E8 A4AA0000   CALL CrackMe.0040C698
00401BF4      EB 50         JMP SHORT CrackMe.00401C46
00401BF6      90            NOP
00401BF7      90            NOP
00401BF8   .  52            PUSH EDX
00401BF9   .  E8 EB7C0000   CALL CrackMe.004098E9
00401BFE      8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]
00401C02   .  50            PUSH EAX

运行,OK!

破解后文件: CrackMe.rar

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
hawking 12 2009-9-11 12:31
2
0
验证通过
时长:235Min
得分:39.58
游客
登录 | 注册 方可回帖
返回