프로그램의 메모리 주소에 0x7fffffffeb58
값이 있는데 그 주소의 값을 알고 싶습니다.
명령을 사용하여 값을 얻는 방법이 있습니까?
나는 시도했지만 dd
성공하지 못했습니다.
답변1
프로세스의 메모리 주소를 보려면 프로세스 주소 공간에 매핑된 내용 /proc/$pid/mem
도 참조하세요 ./proc/$pid/maps
seek()
해당 파일 내에서 원하는 위치를 지정 해야 하며 다음을 수행할 수 있어야 합니다 dd
.
dd bs=1 skip="$((0x7fffffffeb58))" count=4 if="/proc/$pid/mem" |
od -An -vtu4
이 주소의 4바이트는 부호 없는 32비트 정수로 읽고 해석됩니다.
또 다른 방법은 프로세스에 디버거를 연결하는 것입니다.
gdb --batch -ex 'x/u 0x7fffffffeb58' -p "$pid"
kernel.yama.ptrace_scope
그럼에도 불구하고 sysctl 값 에 따라 이 작업을 수행하려면 수퍼유저 권한이 필요할 수 있습니다.
답변2
특정 프로세스의 가상 메모리에 액세스하려면 다음을 수행하십시오.@Stéphane의 답변을 참조하세요.
실제 메모리에 액세스하려는 경우:
이미 devmem
설치한 경우:
devmem 0x2000000
hexdump 사용의 대안:
hexdump -C --skip 0x7fffffffeb58 /dev/mem | head
이것 좀 봐질문StackOverflow에서.