查壳
无壳,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函数
通过动态调试分析,发现这个函数是对用户输入加密后的数据进行逆序。
XCTF easyCpp
最新推荐文章于 2024-08-21 17:00:47 发布
该博客介绍了如何分析一个无壳64位Linux程序,重点在于理解程序如何使用斐波那契数列加密用户输入。通过在IDA中查看Main函数,作者揭示了加密过程涉及将用户输入与斐波那契数列对比,以及如何通过逆向工程解析加密算法。最后,博主提供了Python实现来还原加密逻辑并获取flag。
摘要由CSDN通过智能技术生成