Reverse step1 writeup

本文解析了一个简单的Reverse题目,通过对程序的逆向分析找到了输入参数之间的关系,并最终获取了flag。文章详细介绍了通过观察紧凑的汇编代码,利用提示发现关键函数,以及如何通过逻辑推断确定正确输入的过程。

不要吐槽题目的名字,发题目的就是这么取的=,=
某天半夜出现在协会平台里面的Reverse简单题。这几天很忙,就随便随便写写这题的writeup。

界面

界面很简单,两个edit框和一个按钮。直接丢进od。看这紧凑的代码估计是直接用汇编写的。程序很简单,不像高级语言编译的程序,没有一点多余的代码。结合hint:Do you know SendMessage ?很快就可以发现异常的地方。

把第一个框的输入减去0x200E4作为SendMessage的消息。脑补0xD的WM_GETTEXT消息。算出要输入的参数是”131313”好吧,这随意的参数很有某人的风格=,=。

继续向下,SendMessage消息得到第二个edit框的字符,然后加密。
这里写图片描述

把输入前11个字符和0018FA24 24 0B 15 1C 13 0A 04 36 06 17 2F亦或。然后作为参数调用GetProcAddress。找找返回的地址在哪使用。

这里写图片描述

这里,看这4个参数再次脑补MessageBoxA。反向亦或得到输入参数information输入,自动弹出flag

程序会根据两个输入框的输入动态计算出flag,所以强行用od更改流程会弹出错误的flag,只有正确的输入才能得到正确的flag。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值