【发布时间】:2015-05-07 16:45:06
【问题描述】:
使用 ptrace_attach 时。如何知道要附加的进程是以 32 位还是 64 位运行的?
我正在编写一些类似 strace 的代码,我需要知道它是 32 位还是 64 位,因为 RAX(EAX) 中系统调用的数量不会具有相同的含义。
当您跟踪 cmd (strace ls) 时,它非常简单,您可以映射二进制文件并使用 Elf 执行一些检查。
但我找不到任何关于现有流程的信息?
谢谢!
【问题讨论】:
-
open()然后mmap()/proc/<PID>/exe? -
是的,这就是我刚刚所做的,工作正常,谢谢大家!但这是完全便携的吗?我的意思是 /proc/pid/exe 它像 linux 系统上的通用路径吗?
-
@Lks 在 Linux 系统上足够接近,除非您需要使用一些运行 Linux 内核而没有 /proc 文件系统的嵌入式平台。不过,对于其他 *nixen 来说不是那么便携......