【Reversing.kr】Write up——Easy_CrackMe

本文详细介绍了对Reversing.kr上的Easy_CrackMe程序的逆向工程过程,通过动态调试和反汇编代码分析,揭示了密码的验证逻辑。密码由四个部分组成,分别是'E'、'a'、'5y'和'R3versing',最终确定正确密码为"Ea5yR3versing"。
摘要由CSDN通过智能技术生成

程序运行效果演示

  1. 从Reversing.kr下载到一个可执行程序。在这里插入图片描述
  2. 执行程序后,显示一个对话框,要求输入passwd。
    在这里插入图片描述
  3. 输入错误的passwd会弹出一个“incorrect”,所以这里就是需要我们找到正确的passwd 。
    在这里插入图片描述

分析及破解过程

1.主要反汇编代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:这里四张图片是按顺序截下来的,中间没有地址中断。

2.关键语句含义讲解

  1. congratulation!!",显然这里是passwd输入正确之后显示的窗口,也是我们魂牵梦绕的目的地。
    在这里插入图片描述
  2. incorrect password”,passwd输入错误,oops!我们被挡在门外。记住这里的入口地址“00401135”,后面我们要做的就是努力不让程序跑到这里。
    在这里插入图片描述
  3. 调用“GetDigItemTextA”函数,获取我们输入的passwd,这里的过程我们不必关注。
    在这里插入图片描述
  4. 有没有看到“jnz XEasy_Cra.00401135"?如果上面比较的结果不相等,就会将我们带到”00401135”。这是输入的passwd与程序预期的passwd的第一部分比较,只比较了一个字符。我们在这里下一个断点。
    在这里插入图片描述
  5. 第二部分比较。基本可以确定这里的“5y"就是预期的输入了,后面“call Easy_Cra.00401150"跳转到“00401150”,注意看,这是比较逻辑!
    在这里插入图片描述
    在这里插入图片描述
  6. 第三部分比较。同样,可以猜想到”R3versing"也是预期输入。
    在地址“00401102”处,“sbb eax,eax"先是对eax完成借位减法,这样eax变为0,然后"sbb eax,-0x1"又将eax减去-1,所以eax又变为1,最终经过指令“test
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值