算法分析:BUUCTF-2019全国赛的一道逆向题

本文详细介绍了如何分析一个无壳VC编译程序,通过OD调试,断点GetDlgItemTextA,发现ExitProcess函数与输入长度有关。通过对jbe跳转条件的分析,确定输入为122,然后通过内存地址的比较,找到需要输入的xyz字符。最终揭示了flag的拼接过程。
摘要由CSDN通过智能技术生成

1.对程序进行查壳,发现是个无壳vc编译的

2.运行程序,查看程序运行流程,在password中输入12345678,按下Crack按钮以后没有任何提示程序结束运行

3.依旧先让od跑一遍,以前说过的这种通过用户输入然后再按下按钮触发事件的先对GetDlgItemTextA函数断点看程序是否是用这个函数从输入框获取用户输入的

在输入框输入12345678按下Crack按钮后成功在GetDlgItemTextA函数断下,由于我们的断点是GetDlgItemTextA函数的入口点,属于系统领空,所以我们直接往下找到离GetDlgItemTextA函数入口点最近的retn断点跑完GetDlgItemTextA这个函数去查看按钮的其他逻辑事件

4.查看按钮其他逻辑事件

跑完GetDlgItemTextA函数后发现往下有一个ExitProcess的函数,这让我们联想到了我们正常运行程序时候输入12345678程序结束运行,那可以肯定这个函数就是在我们输入12345678按下Crack按钮触发的,从这个函数往上看发现在这个函数之前有个jbe跳转,点击一看,如果跳转便是跳过这个ExitProcess的执行,说明这个jbe时一个关键点,那我们对jbe这个跳转的条件 cmp eax,0x6进行断点分析

jbe的条件是对比eax的值是否小于等于0x6,如果满足则就跳过退出程序函数,我们一看eax的值便是我们输入12345678的长度&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极安御信安全研究院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值