我有一个 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)
那么有没有办法做到呢?
多谢
我经常得到'otool'所示方法的实现地址的1字节偏移量.
例如'otool -o'给出0xe99d5,但'otool -tvV'给出:
+[NSError(SomeCategory) someMethod]:
000e99d4 b590 push {r4, r7, lr}
000e99d6 f6441184 movw r1, 0x4984
000e99da af01 add r7, sp, #4
000e99dc f2c0010a movt r1, 0xa
Run Code Online (Sandbox Code Playgroud)
所以方法从0xe99d4开始.0xe99d5看起来不对,没有对齐.我相信'otool'工作正常,我不了解实施的某些方面.如何解释输出?
我有一个用于 m1 arm cpu 的最小 c 程序,返回 42:
void _start() {
asm("mov x0, #42;");
asm("mov x16, #1;");
asm("svc 0x80;");
}
Run Code Online (Sandbox Code Playgroud)
此代码在告诉 clang 使用 _start 符号后进行编译并返回正确的值。
clang -Wl,-e, -Wl,__start test.c -o dyn.out
./dyn.out ; echo $?
42
Run Code Online (Sandbox Code Playgroud)
然而,根据 otool,这个二进制文件仍然具有动态链接:
otool -L ./dyn.out
./dyn.out:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)
Run Code Online (Sandbox Code Playgroud)
在告诉 clang 生成未签名的静态二进制文件后,macOS 在尝试运行时立即杀死该二进制文件。
clang -Wl,-e, -Wl,__start -static -nostdlib test.c -o static_no_sign.out
zsh: killed ./static_no_sign.out
Run Code Online (Sandbox Code Playgroud)
在运行之前对二进制文件进行签名也会产生同样的问题。
clang -Wl,-e, -Wl,__start -static -nostdlib test.c -o static_sign.out
codesign -s - static_sign.out
./static_sign.out
zsh: killed …Run Code Online (Sandbox Code Playgroud) 我使用的是Qt Creator 3.6.1用Qt 5.6.0 (Clang 7.0 (Apple), 64 bit)了,我遇到了一些问题,而试图创建一个用于部署的应用程序包.
注意:调用应用程序名称 bibi
Qt Creatorbibi.app在build-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/文件夹下成功生成bibi.app无法在其他Mac上成功链接Qtmacdeployqt 没有解决问题以下是详细信息:
otool
> otool -L build-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/bibi.app/Contents/MacOS/bibi
build-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/bibi.app/Contents/MacOS/bibi:
@rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version …Run Code Online (Sandbox Code Playgroud) 是否有工具/脚本可以帮助我迭代(或仅计算)objective-c 二进制文件中的所有选择器。我想静态分析目标 c 二进制文件并获得该指标。我试过了,otool -tV但它转储的所有数据都是我无法解析的十六进制数据。有些人建议使用,lldb但我不确定如何做到这一点。
我正在尝试这个,我注意到mach-o标题的标志部分,我想知道它做了什么.我试着谷歌搜索它,发现很多引用它,但没有解释标志是什么.
如果我在编译的基本hello世界中使用otool,clang hello.c那么运行otool它会给我这些标志:
$ otool a.out -h
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedfacf 16777223 3 0x80 2 14 664 0x00200085
Run Code Online (Sandbox Code Playgroud)
对于Chess.app
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedfacf 16777223 3 0x80 2 32 4576 0x00210085
Run Code Online (Sandbox Code Playgroud)
这里有什么标志?我在哪里可以找到这样的答案?
我想使用"otool"或"objdump"打印在 iOS 二进制文件中找到的所有 Objective-C 类的名称。我在 macOS 上的未加密的 iOS 二进制文件上执行此操作。
我尝试过的:
otool -oV /path to executable/ | grep name | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)
但我不知道如何只解析 Objective-C 类名。
nm /path to executable/ | grep _OBJC_CLASS_
Run Code Online (Sandbox Code Playgroud)
你们能帮我用 cmd/脚本来打印 iOS 二进制文件中所有 Objective-C 类的名称吗?
代码如下所示,我想知道在结尾部分
0000e0b4 001d22d0 ldrsbeq r2, [sp], -r0
Run Code Online (Sandbox Code Playgroud)
这是否为这行代码进行计算,因为它加载了结束部分中定义的地址
0000e03c e59f4070 ldr r4, [pc, #112] ; 0xe0b4
Run Code Online (Sandbox Code Playgroud)
为什么代码以这种方式组织?
-[Cube message1]:
0000e02c e92d40f0 push {r4, r5, r6, r7, lr}
0000e030 e28d700c add r7, sp, #12 ; 0xc
0000e034 e24dd008 sub sp, sp, #8 ; 0x8
0000e038 e59f1070 ldr r1, [pc, #112] ; 0xe0b0
0000e03c e59f4070 ldr r4, [pc, #112] ; 0xe0b4
0000e040 e1a06000 mov r6, r0
0000e044 e591e000 ldr lr, [r1]
0000e048 e5941000 ldr r1, [r4]
0000e04c e59e5000 ldr r5, [lr]
0000e050 …Run Code Online (Sandbox Code Playgroud)