首先,先了解两个函数:printf和sprintf,一个是写入stdout中,一个是写入到字符串s中。
- printf——从格式化字符串FORMAT,把格式化的输出内容写到标准输出设备(stdout)中;
- sprintf——从格式化字符串FORMAT,把格式化的输出内容写到目标字符串S中;
![365200993aabc3a50f9daba074a808e1.png](https://img-blog.csdnimg.cn/img_convert/365200993aabc3a50f9daba074a808e1.png)
![53c570e291dc4912d88c7666d10b75cf.png](https://img-blog.csdnimg.cn/img_convert/53c570e291dc4912d88c7666d10b75cf.png)
那么,在我们的这个代码分析中,我们会看到一下内容:
- 字符串的分配地址,可以有两种形式,a. 非数组变量的字符串;b. 数组变量的字符串;这两种形式的字符串,在地址分配上是有区别的。
- 字符串的涉及的各种操作,非常多,需要了解这几个函数的功能及使用方法:sprintf, strncmp, strncat, printf, ...
![cdee635c18480c1b08e3c58c4b513ebf.png](https://img-blog.csdnimg.cn/img_convert/cdee635c18480c1b08e3c58c4b513ebf.png)
上述反汇编的分析,其原始的代码很简单:
#include
另外,关于字符串的操作,反汇编中可以看到下面的几个函数,其都去调用了sym..plt函数:
![7350b92f690b94ad996e20caa8e4b854.png](https://img-blog.csdnimg.cn/img_convert/7350b92f690b94ad996e20caa8e4b854.png)