[Android] Profiler & BinEd Plugin을 활용하여 메모리 덤프하기
안드로이드 프로젝트에서 현재 메모리에 있는 String 정보들을 봐야 할 경우가 생겨서 메모리 덤프 후, 메모리 내에 어떠한 String 정보들이 보여지고 있는지 BinEd 플러그인을 활용했다. 목표는 어떠한 값이 암호화 되어야 하며, 메모리 내에 평문으로 보이지 않도록 하는 것이므로, 메모리 덤프 후 평문으로 검색했을 때 아무런 값도 매치되지 않아야 정상이다.
우선 Android Studio -> Preference -> Plugins 에 가서 BinEd를 검색한다.
해당 플러그인 설치를 하고, 안드로이드 프로젝트를 시뮬레이터에서 Run 한다. 시뮬레이터에서 앱이 돌고 있을 때, 하단의 Profiler 탭을 클릭하여 SESSIONS 옆에 있는 + 버튼을 눌러서, 확인하고자 하는 앱을 선택한다.
초록색 동그라미로 표시된 부분의 영역을 누르면, 해당 프로세스의 CPU, 메모리, 네트워크 현황을 볼 수 있다. 오른쪽 사진에서 메모리 영역을 클릭하면 아래처럼 나온다.
여기서 메모리 덤프를 뜨려면 Record 버튼 왼쪽의 아래 방향 화살표를 누른다. 그러면 시간에 따라 메모리 그래프가 이동하다가 어느 순간 멈추게 되고, 메모리 힙을 볼 수 있게 된다. 이걸 파일로 export 하려면, 왼쪽 탭의 Heap Dump 의 영역에 마우스를 갖다댈 때 디스켓 모양 버튼이 나오는데, 이 버튼을 누르면 된다.
파일이 원하는 위치에 저장된 후, Android Studio -> File -> Open As Binary 를 클릭하여 해당 파일을 오픈한다.
여기에서 Command + F (혹은 Ctrl + F) 로 원하는 문자열을 검색하면 된다. 나 같은 경우 검색해도 값이 나오지 않아야 정상이므로, No Match 를 확인할 수 있었다.