是否有用于读取Mac OS X二进制文件的工具,该工具将打印有关此readelf输出的重定位表和符号偏移的信息?
readelf -r app
Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries:
Offset Info Type Sym.Value Sym. Name
08049d58 00001706 R_386_GLOB_DAT 00000000 __gmon_start__
08049d60 00000305 R_386_COPY 08049d60 _ZSt4cout
Relocation section '.rel.plt' at offset 0x5fc contains 13 entries:
Offset Info Type Sym.Value Sym. Name
08049d24 00000107 R_386_JUMP_SLOT 0804868c print
08049d28 00000207 R_386_JUMP_SLOT 0804869c _ZNSt8ios_base4InitC1E
08049d2c 00000507 R_386_JUMP_SLOT 080486ac _ZStlsISt11char_traits
08049d30 00000607 R_386_JUMP_SLOT 080486bc _ZNSolsEPFRSoS_E
08049d34 00000707 R_386_JUMP_SLOT 08048664 _init
08049d38 00000807 R_386_JUMP_SLOT 080486dc sleep
08049d3c 00000907 …Run Code Online (Sandbox Code Playgroud) 我使用自制软件来安装GCC 4.7.0,我的项目的make在汇编时失败了.我可以成功地从.c - > .s中获取代码,但是.s - > .o失败了.
要查看用于安装GCC的brew配方,请查看:https://github.com/Homebrew/homebrew-dupes/blob/master/gcc.rb.我还使用https://github.com/mxcl/homebrew/blob/master/Library/Formula/binutils.rb从上游安装了binutils .安装binutils似乎没有在/ usr/local/lib或类似的地方引入新的'as'.
如何找到这个缺失的指令错误?看起来编译器是正确的,但链接器根本不支持这些指令.说明似乎是矢量指令.
xavierlange $> make suricata.o
/usr/local/bin/gcc-4.7 -DHAVE_CONFIG_H -I. -I.. -I../libhtp -I/opt/local/include -v -Wextra -Wall -fno-strict-aliasing -fno-tree-pre -Wno-unused-parameter -std=gnu99 -DOS_DARWIN -march=native -DLIBPCAP_VERSION_MAJOR=1 -DHAVE_PCAP_SET_BUFF -DUNITTESTS -DREVISION="61d5fe3" -MT suricata.o -MD -MP -MF .deps/suricata.Tpo -c -o suricata.o suricata.c
Using built-in specs.
COLLECT_GCC=/usr/local/bin/gcc-4.7
Target: x86_64-apple-darwin11.3.0
Configured with: ../configure --enable-languages=c,c++,fortran,java,objc,obj-c++ --prefix=/usr/local/Cellar/gcc/4.7.0/gcc --datarootdir=/usr/local/Cellar/gcc/4.7.0/share --bindir=/usr/local/Cellar/gcc/4.7.0/bin --program-suffix=-4.7 --with-gmp=/usr/local/Cellar/gmp/5.0.4 --with-mpfr=/usr/local/Cellar/mpfr/3.1.0 --with-mpc=/usr/local/Cellar/libmpc/0.9 --with-system-zlib --enable-stage1-checking --enable-plugin --enable-lto --disable-multilib --disable-nls
Thread model: posix
gcc version 4.7.0 …Run Code Online (Sandbox Code Playgroud) 我只是想知道在OSX上加载和执行elf文件的可能性.我知道标准的可执行格式是MACHO,但是NASM无法为MACHO对象生成调试信息(我需要使用NASM).我想它是一个很长的镜头,但我不认为我可以使用ELF文件.我可以使用NASM构建它们,但我似乎甚至无法将它们与LD连接起来.
Linux上是否有可用于读取/转储/分析MachO文件的工具?喜欢的东西,readelf或者objdump只是针对MachO格式?这必须在Linux上运行.
我有一个 ELF 文件,我想从中获取我的代码的hex或文件。bin在终端中,如果 a do a file main,这是我的文件,它会显示:
main: ELF 32-bit LSB executable, UCB RISC-V, version 1 (SYSV), statically linked, not stripped
Run Code Online (Sandbox Code Playgroud)
据我所知,objdump在 macOS 上不起作用,并且otool -l main出现以下错误:
llvm-objdump: 'main': Object is not a Mach-O file type.
Run Code Online (Sandbox Code Playgroud)
ELF 文件是使用以下命令创建的:
riscv-none-gcc/8.2.0-2.1-20190425-1021/bin/riscv-none-embed-gcc --specs=nosys.specs main.c -o main
Run Code Online (Sandbox Code Playgroud)
那么有没有办法做到呢?
多谢