0x0 printf 的原理
1 | int x = 0; |
首先, 将$0, addr of “x = %d”$入栈, 然后解析”x = %d”.
在进入 printf 之后,函数首先获取第一个参数,一个一个读取其字符会遇到两种情况
- 当前字符不是 %,直接输出到相应标准输出.
- 当前字符是 %, 继续读取下一个字符
对pattern的解释
- parameter
- n$,获取格式化字符串中的指定参数
- flag
- field width
- 输出的最小宽度
- precision
- 输出的最大长度
- length 输出的长度
- hh 输出一个字节
- h 输出一个双字节