buuctf reverse2

文章涉及程序中对字符串s2与flag的比较,通过读取输入字符串并转换,判断是否与转换后的flag相等。若pid为1,则调用waitpid函数;否则修改flag数组特定元素。此外,提到了fork()用于创建子进程,以及__readfsqword()汇编指令的使用。文章建议学习汇编语言以更好地理解类似流程。
摘要由CSDN通过智能技术生成

从下往上:

1.判断s2与flag是否相等

2.读取输入的字符串并将值赋给s2

3.if()语句内,判断pid的值,若为1,运行waitpid函数。反之,执行else内的

else内:将flag[i]内的值为105和114的元素换为49

4.pid=fork();

5.v8 = __readfsqword(0x28u);

大致流程:省去没必要的判断程序,将flag内的ir转换为数字1

判断输入的字符串是否等于转换后的flag

由此可得,flag就是转换后的字符串

跟进flag

直接将i和r换为1包上flag{}或写脚本

flag{hack1ng_fo1_fun}

笔记:

__readfsqword()(一脸懵逼)

fork()

waitpid() 看不懂

这些都是偏后期才学或者不用学的,现阶段聊不了解都无所谓

PS:忘了说了,老师傅逆向很少反编译,直接看的流程图,已知流程图只有汇编代码,所以现在开始学汇编吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值