XCTF easyCpp

该博客介绍了如何分析一个无壳64位Linux程序,重点在于理解程序如何使用斐波那契数列加密用户输入。通过在IDA中查看Main函数,作者揭示了加密过程涉及将用户输入与斐波那契数列对比,以及如何通过逆向工程解析加密算法。最后,博主提供了Python实现来还原加密逻辑并获取flag。
摘要由CSDN通过智能技术生成

查壳
在这里插入图片描述
无壳,64位Linux程序
放入IDA中分析
查看Main函数
在这里插入图片描述
这里拿加密后的用户输入和程序生成的前16个斐波那契数列进行对比
,不相等则退出程序,相等的话则继续往下执行
所以说只需要逆推出input_encry是如何生成的,既可以得到flag
在这里插入图片描述
这里是把&input_begin存到&input_encry
从头开始分析&input_begin是如何生成的
在这里插入图片描述
这里是把用户输入的字符串首地址放到&one_input中,
one_input_addr也执指向用户输入的字符串首地址
input_end指向用户输入数据的最后一个的地址
input_begin指向用户输入数据的第一个的地址
two_input_addr指向用户输入数据的第二个的地址
在这里插入图片描述
跟入transform函数分析函数作用
在这里插入图片描述
这个循环是对用户输入的数据第二个开始一直到最后一个,进行加密,详细分析写在图中注释,这个函数实现的功能就是把用户输入的整形数组从第二个开始到最后一个依次加上第一个数字
在这里插入图片描述
这里的v7指向用户输入加密后的最后一个字符
这里的v8指向用户输入加密后的第一个字符
在这里插入图片描述
接下来分析accumulate函数
通过动态调试分析,发现这个函数是对用户输入加密后的数据进行逆序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值