/proc/pid/maps에서 실행 파일의 가상 메모리 주소를 덤프합니다.

/proc/pid/maps에서 실행 파일의 가상 메모리 주소를 덤프합니다.

실행 중인 실행 파일의 가상 메모리 주소를 덤프하고 싶습니다.

이것은 내가 실행 중인 명령입니다: ./executable & cat /proc/$(pidof executable)/maps > maps.dump, 그리고 이것이 내가 받는 오류입니다:cat: /proc//maps: No such file or directory

내가 사용한 목적은 프로세스가 활성 상태를 유지하고 정보를 덤프하기 위해 프로세스에 액세스하려고 할 때 해당 디렉토리가 여전히 존재하도록 백그라운드 에서 &계속 실행하는 것이 었지만 분명히 프로세스가 없음을 의미하는 null을 반환했기 때문에 그렇게 하지 않았습니다. 더 오래 달리는 것.executable/proc/$(pidof executable)mapspidof executable

답변1

셸의 기능을 사용하여 변수에서 시작한 마지막 프로세스의 PID를 기억할 수 있습니다 $!.

#!/bin/bash
./executable &
cat /proc/$!/maps > maps.dump

당신이 얻을 경우 radare2:

#!/bin/bash
./executable &
r2 -d $!

Radare2 쉘로 이동합니다.

dmdm=보고 있는 내용을 이해하는 데 시각적으로 더 도움이 되는 "클래식" 메모리 맵을 얻기 위해 실행하려는 명령은 dmd디버그 메모리 맵을 파일에 덤프합니다.

하지만 정말 유용한 일을 할 수 있습니다. 예를 들어 임시 메모리를 사용하여 매핑된 모든 메모리를 저장한 dmsa다음 프로세스 메모리를 가지고 놀면서 프로세스와 동작에 미치는 영향을 테스트하고 필요한 경우 선택적으로( dmr) 또는 완전히( ) 복원합니다.dmra

관련 정보