IDA로 64비트 시스템 파일 디스어셈블시 주의사항

@codemaru · December 09, 2007 · 2 min read

64비트 윈도우의 경우에는 32비트 시스템 DLL과 64비트 시스템 DLL을 모두 가지고 있습니다. 64비트 DLL들은 System32 폴더에 들어있고, 32비트 DLL들은 SysWOW64 폴더에 들어 있습니다. 64비트용 kernel32.dll 파일을 디스어셈블링 하려고 한다면 아마 대부분 다음과 같이 할 겁니다.

  1. 64비트용 IDA를 실행한다.
  2. System32에 있는 kernel32.dll을 연다.
  3. 분석된 내용을 살펴본다.

하지만 위와 같이 하면 백날해도 64비트 버전의 kernel32.dll은 볼 수 없습니다. 왜냐하면 64비트 윈도우의 경우 기본적으로 32비트 프로세스에게는 System32 폴더를 SysWOW64로 맵핑시켜 두기 때문입니다. 즉, System32에 있는 kernel32.dll을 열지만 실제로는 SysWOW64에 있는 kernel32.dll이 열리는 겁니다. 64비트용 IDA도 프로그램 자체는 32비트이기 때문이죠. 따라서 64비트 시스템 DLL을 디스어셈블링 하기 위해서는 다음과 같이 해야 합니다.

  1. System32에 있는 kernel32.dll을 다른 폴더로 복사한다.
  2. 64비트용 IDA를 연다.
  3. 복사한 파일을 연다.
  4. 분석된 내용을 살펴본다.

olly, immunity 모두 64비트 디버깅은 지원하지 않더군요. 아직 64비트 디버깅 환경은 불모지대인 것 같습니다. 물론 windbg가 있긴 하지만 손에 안익어서 그런지 영 적응이 안되는군요.

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중