강좌 & 팁
strings명령을 사용하면 실행파일을 포함한 바이너리파일에서 문자열을 추출할 수 있다.
우리가 매일 사용하는 ls에서 문자열을 덤프하기 위해서는
또는 (program) loader에 대해서 문자열을 덤프하려면 다음과 같이 한다.
시스템 디바이스 /dev/mem은 여러 사용자 프로세스가 공유하고 있기 때문에 보려면 관리자 권한이 필요하다.
한가지 (DDR)메모리에 대해 메모리잔류자기(memory remanence)라는 현상이 있는데,
우리는 DDR 메모리에 전원이 나가면 메모리에 담겨있는 데이타를 없어진다고 알고 있다.
없어지기는 하는 데 얼마나 빨리 없어질까?
잔류자기현상은 우리가 쓰고 있는 메모리의 데이타가 1분정도는 있다가 서서히 없어진다고 한다.
실험방법이 있는데 다음과 같다.
1. perl이나 python과 같은 stript언어를 이용해서 DDR-memory에 무한히(무한루프) 어떤 데이타를 쓴다.
메모리와 프로세스사이에 가상메모리가 존재하기 때문에 주의가 필요하다.
var big_string;
while (1) {
big_string += "2014 Worldcup Brasil";
}
프로세스를 실행시키면 아무것도 일어나지 않는 것으로 보이지만, 좀 기다리면 메모리스왑핑이 일어나면서 HDD-LED등이 반응할 것이다.
2. 컴퓨터를 리셋시킨다. 여기서 BIOS가 끼어들어 메모리를 클리어시키지 않도록 미리 조정해 둔다.
3. 메모리를 한번 들여다 본다.
sudo strings /dev/mem
컴퓨터 리셋 전에 만든 문자열이 보이면 실험 성공!
전원을 꺼졌을 때, 메모리를 급냉각시키면 효과는 더 크다고 한다.
-50도의 냉각스프레이을 이용한다면 수분동안 데이타를 유지시킬 수 있고, 액체질소에 담궈 두면 1시간까지도 유지시킬 수 있다.