【逆向分析】期末上机

程序链接:
链接:https://pan.baidu.com/s/1N0kQ-QcmJZ6038tBsKJjuA?pwd=6vlu
提取码:6vlu

逆向分析要有清晰的思路和足够的耐心

  1. 首先用PEiD对该程序进行查壳
    发现该程序被加壳,但是能正常运行

在这里插入图片描述

  1. 用cmd运行该程序
    可以发现提示输入字符串:please enter the username:、please enter the password: FLAG判断结果字符串:Wrong!

在这里插入图片描述

  1. 初次尝试使用IDA打开该程序
    发现不能成功打开,有报错信息

在这里插入图片描述

  1. 使用Ollydbg打开该程序

在这里插入图片描述

  1. 尝试寻找程序入口点
    a) 使用了堆栈平衡,但是ESP第一次变红之后设断点并不能找到入口点
    b) 一路F8发现了一个PUSHAD,可以进行尝试寻找,结果成功

在这里插入图片描述
在这里插入图片描述

c) 入口点为:0x00401300

在这里插入图片描述

  1. 按F8执行,发现在执行004013E4 E8 26FCFFFF CALL 12080085.0040100F后程序完全执行,所以再次执行,进入该函数段

在这里插入图片描述

  1. F8和F7交替使用,快速浏览程序,最终锁定两个函数
    a) 00401067 E8 99FFFFFF CALL 12080085.00401005 进入运行之后发现其功能为输入用户名和密码

在这里插入图片描述
在这里插入图片描述

b) 00401083 E8 82FFFFFF CALL 12080085.0040100A
进入运行之后发现功能为判断函数

在这里插入图片描述

  1. 猜测函数12080085.0040100A为关键函数,对其进行进一步分析
    a) 锁定CMP和JNZ,猜测为判断用户名和密码是否合法,F8执行进行验证,发现与猜测吻合

在这里插入图片描述

b) 首先看第一个CMP位置00401185 3B45 0C CMP EAX,DWORD PTR SS:[EBP+C]
可以进行内存地址数据跟随,发现DWORD PTR SS:[EBP+C]值为==》0019FEC0 34 12 CD
AB,这就是我们之前输入的密码,而且这里输入的小写转换为了大写格式,所以该程序将我们的输入以16进制读取入内存 EAX
FFA276A2我们猜测就是该程序的flag,先记着

在这里插入图片描述

c) 输入上一步猜测的flag再次调试程序
顺利执行到下一步,没有进行跳转,说明找到了正确的flag

在这里插入图片描述
在这里插入图片描述

d) 分析第二个CMP:0040118D 3B05 347A4200 CMP EAX,DWORD PTR DS:[427A34]
这里的EAX值为123456,是我们之前输入的用户名 那么DWORD PTR DS:[427A34]==》00427A34 D5 53
B8 00就是正确的用户名(B853D5)

在这里插入图片描述

  1. 测试结果的正确性
    程序输出Congrulation!!,表示我们登录成功

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值