본문 바로가기

[REVERSING]

visual st 2010 에서 release모드 컴파일시 ollydbg 디버깅 상태

visual studio2010에서 c언어로 코딩을하고 release 모드로 컴파일하여 ollydbg로 디버깅시에 내가짠 코드가 보이지 않습니다.

코드가 보이긴 하는데 예로 아래와 같은 간단한 코드인데 불구하고 2+3한과정없이 그냥 5만 olly에서 보여주더라구요.

결론은..몇 차례 멘붕끝에 알아 냈습니다. 알아냈지만 여전히 궁금한 부분은 존재하네요.. 일단 포스팅을 시작하겠습니다.

 

<그림.1>

그림 1과같이 코드는 간단합니다. 함수를 이용해서 덧셈 연산하는 코드입니다.

저 코드를 olly로 열어 보았습니다.

<그림.2>

그림2에서와 같이 sum(2,3) 과 2 + 3 연산과정이 없이 그냥 push 5를 해버리지요 참난감합니다.

저함수를 빠저나와 위에서부터 코드 한땀한땀 분석해도 답이없길래 xp에서 visual studio 6.0, 2010을 설치해보고 했는데 6.0에서는 그냥 릴리즈 모드에서만으로도 코드가 정확히 보였는

데 visual2010에서만 코드가 저런식으로 나오더군요. windows7 에서 visual studio 6.0, 2010 결과 동일했습니다.

여기서 visual 2010에 문제로 파악되 검색을 했고 테스트결과 원인을 해결했습니다.

<그림.3>

프로젝트 속성 > 구성 속성 > c / c++ > 최적화 > 사용안함

그림 3과같이 설정할경우 고민했던 코딩 연산과정을 자세히 확인할 수 있습니다.

<그림.4>

그림 2와 비교해보시면 확실히 코드가 이해하기 쉽게 보여줍니다.

그러나 여기서 궁금증이 생기더라구요.

목적은 악성코드 분석인데 만약 악의적인 공격자가 코드를 저렇게 만들어 배포한다면 저걸 어떻게 디버깅을 할까라는 생각이듭니다.

분명 이건 안티디버깅도 아니며, unpack 된 상황도 아닌데 말이저, 혹시 그림2와같은 상태로 코드가 보일때 분석하기 쉽게 코드를 볼수있는방법이나.

해결법을 아시는분은 공유좀 부탁드리겠습니다.^^

 

 

'[REVERSING]' 카테고리의 다른 글

MBR 확인  (0) 2013.10.21
UPX Manual unpacking  (0) 2013.06.19