명령을 사용하여 메모리 주소 값을 얻는 방법은 무엇입니까?

명령을 사용하여 메모리 주소 값을 얻는 방법은 무엇입니까?

프로그램의 메모리 주소에 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에서.

관련 정보