네이트온의 디버그 메시지




아으 저번주까지는 정말 폭풍같은 한주였네요.
몸은 졸고 있는데 계속 손가락 끝으로 코딩은 지속되고 있고
눈은 감고 있는 거 같은데 무언가 리버싱 흔적의 화면캡쳐와 코드설명은 늘어만 가고
매일 택시타고 귀가하니 좋긴 했다만 암튼 비몽사몽 중에도 생기는 아웃풋이 신기하던 ;;
밤샘코딩이 사실 엿같긴 하지만 이번엔 그래도 개 하기싫은데 억지로 하는게 아닌
즐겁게 일할수 있었다는게 그나마 다행이었던 것 같습니다.

얼마전부터 네이트온에서 디버그뷰에 공란으로 되어 있는 디버그메시지를 엄청 찍어대고
있습니다. 저 같은 경우는 안티디버깅 엔진 개발만 주로 했는지라 사실 비주얼 스튜디오로
디버깅하는게 별로 익숙치가 않습니다. 걍 로그 찍는게 더 편하죠 -_- 디버그 모드로
불안불안 실행되는 플그램도 제 체질이 아니구요 (어셈블리 코드로 확인이 필요하다면
빌드한 다음에 아예 걍 olly 로 열어봅니다)

머 그래서 어쨋든 항상 사용하는 log Class 가 있고 OutputDebugString도 가변인자
버전으로 맹글어서 많이 의지하여 사용하고 있는데, 그런 상황에 다른넘들이 디버그뷰에
열라 찍어댄다면 참 짜증이 나죠. 최근엔 네이트온이 공란으로 찍어대는 디버그 메시지에
스트레스를 이빠이 받고 있습니다.
 
혹시 이거 프로세스별로 예외처리나 디버그 메시지 기록되지 않게 할 순 없을까 궁금해서
메뉴를 뒤져봤는데 Filter 라는 넘이 있드라구요, 거기다가 NateOnMain.exe를 넣어봤습니다.


사용자 삽입 이미지


아 근데 여전히 찍어대는 겁니다. 정말 ㅅㅂ 짜증나죠. 왜그럴까 생각하고 있는데
같이 일하는 넘이 한마디 하더군요.


사용자 삽입 이미지


그래서 pid 를 등록을 했습니다만, 이게 필터에 대한 설명을 자세히 보니, 이런!!!
Enter multiple filter match string separated by the ';', character......
이렇게 쓰여 있군요... pid 로 빼긴 빼지만 이게 프로세스 식별을 위한 pid 가 아니고
그냥 dbgview 에 pid 가 표시되면서 메시지 찍는데, 문자열에 그 내용이 찍히면
걍 무조건 빼는거였습니다 -_-

이렇게 필터링하면 아래와 같은 문제가 발생하죠, 대화를 보세요.

사용자 삽입 이미지


쵸큼 이해가 되지 않는 분들은 이 코드를 보면 바로 아하! 하실겁니다.
다음과 같은 코드가 있습니다.



결과를 보면 당연히 아래와 같겠죠.


사용자 삽입 이미지


근데 제가 네이트온이 디버그 메시지를 좇나 찍는게 짱나서 네톤의 pid 를 exclude 해버렸습니다.
네톤의 pid 는 공교롭게도 456 이었군요. 그리고 pid가 456인 네톤은 이제 더이상 디버그뷰에
메시지를 찍지는 않습니다. 만족하고 열심히 열혈 코딩을 하던중 어쩌다가 다시 위와 같은 코드를 
디버그뷰에 찍을 일이 생겼습니다. 그러나!!!!!!!!!!!!! 이번에는 이렇게 되어버리겠죠.


사용자 삽입 이미지


사용자 삽입 이미지

이런!!!! 중요한 디버그 메시지인 "ㅅㅂ 456" 이 없어져 버렸습니다. 이런 망할...

그래서 디버그뷰의 filter 기능은 별로 추천하지 않습니다.
그냥 아래와 같은 방법이 깔끔합니다.
NateOnMain.exe의 kernel32.dll OutputDebugStringW()를 retn 4 시켜버리는겁니다.

사용자 삽입 이미지

사용자 삽입 이미지

이제 깔끔해졌네요. 더이상 디버그 메시지가 난립하지 않습니다.

굳이 네톤에 국한된 얘기가 아닙니다. 디버그뷰 좀 띄워놓고 인터넷 여기저기 다니고
플그램 이것저것 쓰다보면 그 무수한 로그에 사실 넌덜머리가 납니다.
버그 찾는거 보다 많은 로그 속에서 내 로그 찾는 시간이 더 많다는 생각이 들기까지 하니까요.

상용소프트웨어 개발 하시는 분들 제발 디버그뷰에 메시지 찍는 버전으로 베포좀 하지 마세요.
릴리즈 빌드의 기본 매너라고 생각됩니다.

그리고 참고로 네톤을 리버싱한 내용으로 오인될 수가 있는데,
이 내용은 상용 소프트웨어를 리버스 엔지니어링/코드 패칭 한 것이 아니고
어디까지나 kernel32.dll 의 OutputDebugStringW()만을 건드린 것임을 다시한번 명시합니다.


window31. 2008년 10월.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/210 관련글 쓰기

댓글을 달아주세요

  1. 2008/10/15 07:44
    댓글 주소 수정/삭제 댓글
    아...저도 그런적이...있었는데...써먹어야 겠군요...
    잘보고갑니다...
    • 2008/10/18 17:56
      댓글 주소 수정/삭제
      저만 그런게 아니라 다행이네요 ^^
  2. 2008/10/15 10:24
    댓글 주소 수정/삭제 댓글
    필터를 "[456]" 으로 괄호까지 포함시키면 안나올것 같은데요^^
    네톤은 배포를 왜 저런걸 하나 모르겠네요
    디버그 코드 래핑하는걸 잊은듯
    저도 dbgview를 띄워봤는데, 저는 네톤 업데이트를 안해놔서 그런지 안찍힙니다;;;
    최근버전만 그런듯?
    ㅋㅋ
    잘보고 갑니다
    • 2008/10/18 17:58
      댓글 주소 수정/삭제
      아하! 그런 방법이 있었군요.
      네 안찍히는 사람도 종종 있다고 하네요
  3. 하루
    2008/10/16 10:48
    댓글 주소 수정/삭제 댓글
    무서운 사람..
    모든걸 캡쳐 /버럭/
  4. 2008/10/19 09:59
    댓글 주소 수정/삭제 댓글
    호환(?)에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피(?) 한 경우 리버싱을 할 수 있다는군요.

    그럼 호환(디버그 메세지 삭제) 를 위해서는 리버싱 할 수 있는거 아닌가???
    • 2008/10/22 18:56
      댓글 주소 수정/삭제
      뭐 그렇다면 다행이지만 이건 네이트온 리버싱이 아님
  5. chpie
    2008/11/01 11:53
    댓글 주소 수정/삭제 댓글
    아하하 ㅎㅎㅎㅎㅎ
    "ㅅㅂ456" 이 증발한것이 넘 재미있네요 ㅋㅋ
    • 2008/11/07 02:15
      댓글 주소 수정/삭제
      하하 유명하신 chpie 님 첫 댓글주신거 같은데
      반갑습니다 ^^;
  6. ggg
    2010/07/26 15:37
    댓글 주소 수정/삭제 댓글
    정품 윈도우가 아니군요^^;
    • 2010/07/26 19:50
      댓글 주소 수정/삭제
      정품인데요 일부러 투덜댄다로 만들었어요 ㅎ

BLOG main image
by window31

카테고리

분류 전체보기 (281)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (19)
잡담 (77)
etc (8)
who am i (8)
보안 이야기 (88)
Tools (3)
월간 마이크로소프트웨어/그.. (28)

글 보관함