RAM 내용 탐색


12

redis 데이터베이스를 사용하고 있으며 응용 프로그램이 사용하는 RAM의 내용을 탐색하고 싶습니다.

나는 왜 이것을하고 싶은지에 대한 설명을 내가 묻는 질문보다 더 의미가 있다고 생각합니다.

Redis는 이진 데이터를 저장하는 간단한 키 값 저장소입니다. 나는 인코딩과 같은 것들을 탐험하기에 좋은 장소라고 생각하며 바이너리 패턴의 데이터를 찾고 RAM을 통해 스키밍하고 간단한 패턴을 찾는 것과 같은 일을하는 것이 흥미로울 것입니다. RAM에서 검색 한 베이비 쿼리 언어를 작성한다는 아이디어를 탐색 할 수 있습니다.

쿼리 언어에 대한 SICP 장을 읽은 후이 아이디어를 얻었습니다 .

어디서부터 시작해야 할 생각이 있습니까? 처음에는 시스템에 "이 응용 프로그램이 실행중인 주소 공간을 알려주십시오"라고 묻고 싶습니다.

답변:


7

gdb를 사용하여 프로세스 메모리에 액세스 할 수 있습니다.

또한 "/ proc"파일 시스템을 살펴 봐야합니다. 여기에는 모든 프로세스에 대한 의사 파일이 들어 있습니다. 그들 중 일부는 흥미로운 정보를 포함 할 수 있습니다


7

cat /proc/[pid]/maps proc 맨 페이지에 따르면.

당신이 원하는 것 같습니다. pid가 필요한 경우 ps 또는 다른 도구에서 가져옵니다.

사용중인 주소 공간을 찾는 데 사용됩니다. 작년에 defcon의 동료 중 한 명이 Linux에서 createremotethread를 구현했습니다. 그렇게 할 수 있습니다 ... 그런 다음 임의의 메모리를 읽습니다.

더 읽기 쉽다는 점 을 지적한 psusi의 신용 pmap -x [pid].


3
참고 pmap더 인간 읽을 수 있도록이 정보를 포맷합니다.
psusi

6

디버거를 사용하십시오.

자신의 롤을 원한다면 모두 통과 ptrace합니다.

프로세스의 메모리 맵 (메모리의 목차)을 /proc/$pid/maps보고에서 전체 메모리 내용을 읽을 수 있습니다 /proc/$pid/mem. 후자의 파일을 정상적으로 열 수는 없습니다. Linux에서 / proc / $ pid / mem을 어떻게 읽습니까?를 참조하십시오.


1
당신은 내 질문 중 일부에 매우 도움이되었습니다. Linux OS 또는 특히 흥미로운 웹 기사와 관련하여 일반적으로 읽을 책을 제안합니까?
MageProspero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.