Windows XP에서는 디버깅할 때 PE 파일 베이스 주소가 일정해 IDA 의 디스어셈블 내용과 비교하면서 볼 수 있습니다.

하지만, Windows 7 이상에서는 보안 기능 때문에 로드되는 PE 파일의 BASE가 매번 변경합니다.

 

그래서 32비트 파일 분석할 때는 Windows XP에서 디버깅했지만 요즘은 Windows XP에서 로드 안되는 32비트 파일도 나오고 64비트 악성코드도 점차 늘어나고 있습니다.

 

디버거와 IDA Pro 의 베이스주소가 달라 양쪽을 다보는 경우 주소 때문에 불편합니다.

(계산해도 됩니다만.... 그건 좀)

 

해결 방법은 다음과 같습니다.

 

방법 1) IDA Pro Image base 변경

 

IDA Pro에서 'Edit' -> 'Segments' -> 'Rebase Program'으로 IDA의 Image base 주소를 디버거의 Image base와 일치시키면 됩니다.

 

 

시스템 설정을 변경 안해도되지만 문제는 디버거에서 로딩할 때마다 매번 Image base가 변경되는데 매번 맞춰줘야합니다. 그리고 Function 이름 변경할 때 주소를 포함하면 더 혼란스러워집니다

(예: XXX_140020010 로 변경했는데 Image base가 달라지면 다시 변경해야 혼란이 적음)

 

 

방법 2 ) PE 파일 패치

 

PE 파일 헤더에서 패치 할 수도 있는데 이건 찾아서 다음에....

 

 

 

방법 3) Windows 설정 변경

 

 

REGEDIT로 다음 키를 생성합니다.

 

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]

MoveImages = 0 (REG_DWORD)를 생성하면 된다고 합니다.

시스템을 재부팅 후 테스트 해봅니다.

 

IDA Pro와 WinMain 함수 주소가 동일합니다.

 

64비트 파일 디버깅 할 때마다 검색해야해서 정리 차원에서 작성했습니다.

Posted by xcoolcat7

댓글을 달아 주세요