这样做的不同部分libc(如.text,.plt,.got,.bss,.rodata,和其他人)在获得相同的偏移相对于装载libc基址每次?
我知道libc每次运行程序时加载器都会在随机位置加载。
先感谢您。
我想使用 llvm 控制流完整性,我使用了 Ubuntu 14.04 附带的 clang+llvm 二进制打包版本 7.0.1。当我使用带有选项 '-fsanitize=cfi -flto -fvisibility=hidden' 的 clang++ 时,出现以下错误:
/usr/bin/ld: /home/username/llvm-7.0.1/bin/../lib/LLVMgold.so: error loading plugin: /home/username/llvm-7.0.1/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
知道如何在不使用启用黄金的选项编译源代码的情况下解决这个问题吗?
我想知道是否有任何指令序列,而不使用任何其他寄存器将RAX的低32位复制到其高32位.当然,我也希望EAX完好无损.
先感谢您.
SHA1MSG1是Intel指令,用于计算用于计算SHA1哈希值的步骤。我使用它的方式如下(采用AT&T语法):
sha1msg1 %xmm14, %xmm13
Run Code Online (Sandbox Code Playgroud)
我可以编译我的代码。当我运行我的代码时,它给出一个错误:
Illegal instruction (core dumped)
Run Code Online (Sandbox Code Playgroud)
我使用调试了代码ida pro,但此指令出现错误,如下所示:
401839: got SIGILL signal (Illegal instruction) (exc.code 4, tid 48292)
Run Code Online (Sandbox Code Playgroud)
我试图找到该指令的示例用法,但没有找到任何用法。我想我根据规格正确使用了它。知道我做错了什么吗?
顺便说一句,我正在使用Ubuntu 64位。
我正在使用从汇编代码组装的多个目标文件来制作可重定位共享库(所有编译都应使用 -fPIC 和 -DPIC)。
在我的代码中我有push label说明。当我使用一切看起来都很好将汇编代码组装成目标文件时-fPIC -DPIC,但是当我想使用目标文件创建共享库时,我收到了消息relocation R_X86_64_32S against '.text' can not be used when making a shared object; recompile with -fPIC。
我确信问题出在这些push label说明上,因为当我删除它们时,错误就会消失。
关于如何组装它有什么想法吗?
顺便说一句,我的平台是采用 Intel x86_64 架构的 Linux,编译器gcc采用 GAS 语法。我对 64 位库感兴趣。