文章目录
- 一道经典的 C++ 的逆向,做完之后总结一下
分析
- 64位elf,无壳,直接拖入 IDA 中进行分析
- 主要的逻辑全部在
main
函数中实现
Part01:初始化
- 首先对
vector
等变量进行初始化,然后进入两个for
循环,先是从命令行读入 16 个数,然后调用fib
函数初始化另一个vector
。
fib
函数就是计算斐波那契数列
Part02:调用 transform
对 vector
进行操作
- 先来整理一下 C++ STL 里面
transform
函数的用法,它定义在<algorithm>
头文件中。我强烈建议对于库函数直接翻到源文件看解释,没有比这个更言简意赅的了 - 下图中展示了接收 4 个参数的
transform
函数的含义,其是将[first,last)
间的元素按照op
进行变换后,出入到result
迭代器中
- 在源程序中,对变量重命名一波之后就会非常清晰,可以看到是将输入的第二个数字和最后一个数字之间的内容经过
lambda
表达式的变换输入到midVec
中
- 关键就在于这个
lambda
表达式,它其实很简单,就是将传入的两个参数相加再返回
- 看一下上层的函数,发现传入的第一个参数始终是
transform
的第四个参数,传入的第二