BLOG ARTICLE 디버깅 | 1 ARTICLE FOUND

  1. 2012.09.08 자식 프로세스 디버깅하기

자식 프로세스 디버깅하기

Analysis/Reverse Engineering 2012. 9. 8. 02:08 Posted by 알 수 없는 사용자


우리는 종종 자식 프로세스를 디버깅해야 하는 경우가 생깁니다. 예를 들어 인터넷 익스플러러를 통해 접속한 웹 페이지에서 자바를 사용한다면 IE의 자식 프로세스로 java.exe가 실행될 것입니다. java.exe 프로세스가 IE의 자식 프로세스로 생성되어 실행되는 순간에 우리는 이것을 attach하고 싶습니다. 이 순간을 디버거로 잡는 방법이 두 가지 있습니다(제가 모르는 방법이 더 있을 수 도 있습니다).


첫 번째 방법은 윈도우 레지스트리에서 attach할 프로세스(java.exe)를 등록하고, 거기에 디버거를 설정해 주는 방법입니다. 즉, 해당 프로세스가 실행될 때 설정한 디버거가 실행되도록 하는 것입니다.


두 번째 방법은 Windbg를 이용한 방법입니다. Windbg에서는 실행파일을 디버깅하기 위해 불러올 때 자식 프로세스까지 디버깅을 할 수 있는 옵션이 존재합니다. 이 옵션을 체크하고 실행하면 IE를 디버깅 하던 도중에 만약 java.exe 프로세스가 실행될 경우, Windbg가 알아서 해당 모듈을 로드하는 순간 브레이크 포인트를 걸어 디버깅 할 수 있도록 도와줍니다. 물론 java.exe 프로세스뿐만 아니라 다른 모든 자식 프로세스가 생성되어도 잡아줄 것입니다.


1. 윈도우 레지스트리에 디버거를 등록하는 방법


먼저 윈도우 실행에서 레지스트리 편집기(regedit.exe)를 실행합니다. 그리고 "Imae File Execution Options"에 attach하고 싶은 프로세스 이름을 키(key)로 생성합니다. 마지막으로 생성한 키에 문자열 값을 생성하여 그 값에  사용할 디버거의 전체 경로를 설정합니다. 저는 ollydbg로 설정해 주었습니다.


레지스트리 경로:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\java.exe



인터넷 익스플러러를 실행시킨 다음 자바를 사용하는 웹 페이지에 접속하면 다음과 같이 java.exe 프로세스는 ollydbg에 attach 된 상태로 실행됩니다.




지금부터 신나게 디버깅을 하면 되겠습니다. :)



2. Windbg에 자식 프로세스 디버그 옵션을 이용한 방법


먼저 Windbg를 실행하고, "File -> Open Executable"을 실행합니다. 인터넷 익스플러러를 불러오는 동시에 맨 아래쪽에 위치한 "Debug child processes also" 옵션에 체크만 해주면 끝입니다.



마찬가지로 해당 웹 페이지에 접속하면 java.exe 프로세스가 실행됩니다.



Windbg에서는 java.exe 프로세스가 로드될 때 브레이크 포인트를 걸어줍니다.



Windbg로 신나게 디버깅을 하시면 되겠습니다. :)


상황에 맞게 두 가지 방법 중 하나를 자유롭게 사용하시면 될 것 같습니다. 혹시 더 좋은 방법이나 다른 방법들이 있다면 공유 좀...ㄳㄳ


참고로 윈도우 7에서도 가능합니다.


'Analysis > Reverse Engineering' 카테고리의 다른 글

SSH 터널 프록시를 이용한 행동 익명화  (0) 2013.04.10
AND