RAM 콘텐츠 탐색

RAM 콘텐츠 탐색

나는레디스데이터베이스이며 애플리케이션이 사용하는 RAM의 내용을 탐색하고 싶습니다.

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

Redis는 바이너리 데이터를 저장하는 간단한 키 값 저장소입니다. 나는 인코딩과 같은 것들을 탐구하기에 좋은 장소가 될 것이라고 생각하며 RAM을 훑어보며 데이터의 바이너리 세트를 찾는 것과 같은 일을 하는 것이 나에게 흥미로울 것이라고 생각합니다. 간단한 패턴을 찾는 것과 같은 일을 하는 것입니다. RAM에서 검색하는 베이비 쿼리 언어를 작성하는 아이디어를 탐구해 보세요.

나는 이 장을 읽고 나서 이런 생각을 갖게 되었다.SICP쿼리 언어에 대해

어디서부터 시작해야 할지 생각이 있으신가요? 처음에는 시스템에 "이 응용 프로그램이 실행되고 있는 주소 공간을 알려주세요."라고 묻고 싶습니다.

답변1

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

당신이 원하는 것 같습니다. PID가 필요하면 ps나 다른 도구에서 가져옵니다.

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

신용슈시pmap -x [pid]읽기가 더 쉽다는 점을 지적하기 위해서입니다 .

답변2

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

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

답변3

디버거를 사용하세요. 그게 바로 그 목적입니다.

스스로 굴리고 싶다면 모든 것이 통과됩니다.ptrace.

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

관련 정보