노트북 하드디스크를  웬디320GB로 교체하고나서,  윈도우 재설치 후

네이버 폰을 깔았다.

 

예전부터 계속  나를 성가시게 했던, 
윈도우 비스타에서 관리자권한으로 네이버 프로그램을 실행하기만 하면

항상 아래와 같이  SHIT 같은 창이  뜨곤 했지.

 

 

 

 

물론  네이버측은    거대한 포털 사이트이고 ,  엄청나게 많은 고객층이 있기때문에,

그 모든 사람들의 컴퓨터에서  잘 돌아가게끔 프로그래밍 하기 위해서는 , 만약을 대비해서 위와같이   창을 띄워서 안내하는게 당연할것이다.

 

그러나   나같은 사람 입장에서는 저것은  매우 불필요한 창이고  쓸모없는 창이다.

구체적으로 말해서  나같은 경우 ,

로컬보안정책 - 보안옵션에서    Administrator Status를  Enable로 고쳐준뒤 , 항상 Administrator 계정으로

로그인해서  비스타를 쓰기 때문에 ,  위와 같은 창은 ,  상당히 불편한것이 된다.

 

 

따라서 ,  나는 위와같은 창을  제거해버리고 , 바로 네이버폰이 실행되게끔  고쳐보겠다.

 

 

 

 

 

프로그램  내부를 분석하거나 , 디버깅할때 가장 많이 쓰이는   Ollydbg로   네이버폰을   Open 한다.

 

 

 

 

프로그램을 실행하기전  디버깅 옵션은 아래와 같이 한다.

 

 

이제   F9를 눌러서  네이버폰을  실행시켜보자.

어김없이 위와 같은 창이 뜰것이다.

 

 

 

 

이제  올리디버그  창으로 와서 ,  F12를 한번 눌러준뒤 ,   Alt + F9  를 눌러준다.

그럼   아래와같이  어떤 코드에서 멈출것이다.

 

이 부분은 우리가  수정할곳에 해당되지 않으므로 ,  Ctrl + F9 를 눌러서   RETN까지 코드를 실행해준뒤  ,   F7로   함수를 빠져나온다.

 

그럼   아래와 같은  부분의  코드가   나올것이다.

 

 

 

 

이제  우리가 수정할 부분에  거의 근접했다.

이 상태로  Ctrl + F9 를 눌러보자.

 

왼쪽위에   Till Return  이라고   상태가 바뀌면서 , 

 "네이버 어플리케이션 안내"  창을 우리가 제어할 수 있게 된다.

관리자  실행  버튼을 한번 눌러준다.

그럼 아래와 같은 코드에서 멈출것이다.

 

 

우리는 여기서   위 스샷을 주의깊게  잘 볼 필요가 있다.

현재   "  네이버 어플리케이션 안내 " 창에서    관리자 실행  버튼을 누른 상태이다.

그때의   EAX 레지스터에  리턴되는 값은  7 이다.  (위 스샷 빨간색 네모 쳐놓은 부분)

이제 대충 감이 오는가?

 

그렇다.

실행을 취소합니다.   버튼을 눌렀을때  EAX에 리턴되는 값은  분명히 7은 아니고 , 다른 값일것이다.

알아본바로는 , 실행을 취소했을때 EAX에 리턴되는 값은  6이었다.

 

따라서 이 프로그램의 실행 루틴을 대략 추정하자면  이렇다.

 

1.함수를 호출

2.함수에서  실행을 취소하느냐 ,  관리자 실행 을 하느냐 결정

3.  취소할경우  EAX에는 6이 리턴  ,   관리자 실행을 할경우 EAX에는 7이 리턴.

4. CMP EAX,7 이라는 코드부분이 분명히 존재할것임.   (EAX값과  7이라는 값을 비교)

5. Jump if Equal ( JE  실행코드 )  즉 ,  EAX와 7이 서로 같을경우 프로그램을 실행하세요~ 하는 부분이 존재할것임.

 

이제  우리는 수정할 부분을 알수있게 되었다.

즉 ,  최초에  1번부분에서  함수 호출을 하지말고 ,   바로 EAX에 7을 넣어버리면 될것이다.

 

위 스샷까지 잘 따라왔다면  ,  F7을 눌러서  리턴한다.

그 후에  Ctrl+F9 를 눌러서  RETN 까지  실행해준다.

 

 

 

 

리턴까지 실행했는데도  역시나  EAX값은 아직 7이다.

예상했던대로이고 , 이 다음에는  CMP EAX,7이  나올것이다.

 

F7을 눌러서  리턴해보자.

 

 

자,  우리가 예상했던 부분이   고맙게도 바로 나와주었다.

CMP EAX,7이라는 코드가 있다.

 

아래쪽에는  JE 484A62라는 부분이 있는데,

이 코드는  CMP EAX,7에서    7과 EAX가   같을경우 즉 ,  Jump if Equal 의 명령어로써   값이 같으면 점프를 한다는 뜻이다.

 

물론 우리는   JE 484A62 부분을  JMP로 바꿔줌으로써  어느 버튼을 누르던간에 무조건 실행하게도 할수 있지만,

그렇게 하면 ,   어플리케이션 안내 창이  그전에 떠버리게 되므로 ,  EAX리턴값이 결정되는 CALL 문을  수정해줘야 할것이다.

 

CMP EAX,7 부분  바로 위쪽에 

CALL 5C1F97

라는 부분이  보일것이다.

 

저 부분에서    스페이스바를  눌러서   Assembly 창을 띄운다.

 

 

 

위 스샷과 같이  mov eax,7 이라고  입력해주고  , Assemble 을 해준뒤     창을 닫는다.

 

 

 

 

 

위와 같이 수정해준다면   모든게 잘된것이다.

 

우리는   4바이트만을 수정시켜서 , 우리가 원하는 흐름으로  프로그램을 실행하게끔 유도하였다.

 

 

이제  수정한 내용을   저장해준뒤 , 프로그램을 실행해보자.

저장하는 방법은     OllyDbg   다루는 방법에서  가장 기초적인 방법이므로 , 여기에서는 언급하지 않겠다.

본인이 알아서 잘 습득하시길...

 

저작자 표시 비영리 변경 금지
신고
by Sone 2008.12.08 20:13
| 1 |