![](/img/trans.png)
[英]warning: passing arg 1 of `atoi' makes pointer from integer without a cast
[英]Passing arg 2 of `memset' makes integer from pointer without a cast
我正在关注http://www.corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/上的教程,以了解有关漏洞利用的更多信息。 显示的脚本在perl中,我想用C编写它。我在C中找不到类似于“ \\ x41” * 10000的函数时遇到困难。无论我是“ A”还是“ \\ x41”作为第二个参数,都会出现此错误。 这是我的代码:
#include <string.h>
#include <stdio.h>
int main(void)
{
FILE *crash;
crash = fopen("crash.m3u", "w+");
char junk[10001];
memset(junk, "A", sizeof(junk));
fputs(junk, crash);
fclose(crash);
return 0;
}
采用
memset(junk, 'A', sizeof(junk));
在C语言中,单引号'
和双引号"
之间存在巨大差异。单引号用于char
值,双引号用于字符串(多字符或const char *
)值。
"A"
解析为字符串或char*
,但memset
的第二个参数是int
。 运用
memset(junk, 'A', sizeof(junk));
由于'A'
是char
类型的,因此可以工作,可以将其隐式转换为int
。
您需要一个字符来代替字符串。
尝试使用“ \\ x41”代替“ A”-如网页所示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.