Ahm*_*her 31 c compiler-construction
我在编译后面的漏洞利用代码时遇到问题:
http://downloads.securityfocus.com/vulnerabilities/exploits/59846-1.c
我正在使用:"gcc file.c"和"gcc -O2 file.c",但它们都会出现以下错误:
sorbolinux-exec.c: In function ‘sc’:
sorbolinux-exec.c:76: error: stray ‘\302’ in program
sorbolinux-exec.c:76: error: stray ‘\244’ in program
sorbolinux-exec.c:76: error: ‘t’ undeclared (first use in this function)
sorbolinux-exec.c:76: error: (Each undeclared identifier is reported only once
sorbolinux-exec.c:76: error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)
我尝试在Kali linux和Ubuntu 10.04上编译它们并得到相同的结果.
Yu *_*Hao 23
您在该行上有一个无效字符.这就是我所看到的:

Kla*_*aus 14
您的来源中包含无效字符.如果您的源中没有任何有效的非ascii字符,可能是双引号字符串文字,您只需将文件转换回ascii:
tr -cd '\11\12\15\40-\176' < old.c > new.c
Run Code Online (Sandbox Code Playgroud)
编辑:iconv的方法将停在错误的字符,这是没有意义的.上面的命令行正在使用示例文件.祝好运 :-)
当然,将文件转换为 ASCII 并清除所有 Unicode 字符。\n它可能会起作用... 但是...
\n还有两种手术方法可以解决这个问题:
\n切换字体以查看字符。(它可能在您当前的字体中不可见)
\n正则表达式搜索不属于非扩展 ASCII 的所有 Unicode 字符。
\n在Notepad++中,我最多可以搜索 FFFF,这还没有让我失望。
\n[\\x{80}-\\x{FFFF}]
\n80 是 128 的十六进制,第一个扩展 ASCII 字符。
\n点击“查找下一个”并突出显示空白区域后,您可以关闭搜索对话框并按Ctrl+C复制到剪贴板。
\n然后将字符粘贴到 Unicode 搜索工具中。\n我通常使用在线工具。\n http://unicode.scarfboy.com/
\n例子:
\n我的代码中有一个项目符号点 (\xe2\x80\xa2)。\nUnicode 值是 2022(十六进制),但是当编译器读取为 ASCII 时\n你会得到 \\342 \\200 \\242 (3八进制值)。它并不像将每个八进制值转换为十六进制并将它们粉碎在一起那么简单。所以“E2 80 A2”不是代码中的十六进制 Unicode 点。
\n| 归档时间: |
|
| 查看次数: |
127591 次 |
| 最近记录: |