GxxxGuard 소스 유출?




 

GxxxGuard 소스 유출?



사용자 삽입 이미지


요즘 드문드문 GxxxGuard 의 소스가 유출되었다는 얘기가 보이더군요.
그도 그럴 것이 위에 보이는 소스 프로젝트의 화면캡쳐도 올라왔을 뿐더러
아래 링크처럼 드라이버 소스를 판매한다는 커뮤니티도 있으니까요 :p
http://www.pudn.com/downloads76/sourcecode/game/detail280588.html

아마 INCX Internet측의 공식적인 발언 혹은 관련 종사자의 코멘트가 있으면 가장 좋겠지만
그렇게 문제가 커질만큼 공론화된 문제도 아니고, 또 괜히 더 공식화했다가
말 안하느니만 못한 사태가 생길 수 있으니 아마 잠자코 있는 것 같습니다.
(또 GxxxGuard팀에는 팀원들이 커뮤니티 활동 하는걸 위에서 안 좋아해서 ㅋㅋ)

따라서 한때 거기서 잠깐 일했던 사람의 하나로써 제가 한번 얘기해 볼까 합니다.

일단 결론부터 말해서 소스 유출 사건은 없었습니다.

보이는 화면은 짱개가 올린 소스 캡쳐 사진인데, 일단 그럴 듯합니다. 관계자들도 처음
보고 어이를 상실했을 정도로요 :p

하지만 프로젝트 구성이 완전 다릅니다. 있지도 않은 cpp들 배열들이 난립하고
함수 이름도 당연 다릅니다.
대표적인 예를 들어서 로그를 기록할때 WriteLog(UnString(".....")); 식을 사용하는데
GxxxGuard에 저런 이름을 가진 함수는 없습니다.

물론 로그도 기록하고 스트링 디크립트도 합니다만 저렇게 사용하진 않습니다.

단편적으로 생각해봣을때도, 일단 UnString()이 문자열을 복호화하는 함수라고 가정했을때요
암복호화 루틴을 코드에 넣어보신 분은 다 아시겟지만, 암호화된 문자열을 소스코드에
박아넣은 뒤 반드시 필요한 작업,,, 그건 오리지날 문자열을 위에 주석처리해서 같이
포함시키는 것이죠,

예를들어 UnString()이라는 함수가 정상적인 복호화 루틴을 위해서 사용된다면

// "fuckyou"
WriteLog(UnString("45#%^@$#%6ger5rb%$^H%^Hhr6yr5bsr5ygv65ev"));

이런식으로 소스에 넣어둘겁니다.
만약 저렇게 "fuckyou"를 주석으로 넣어놓지 않는다면 나중에 그 부분을 유지보수할때
저 "45#%^@$#%6ger5rb%$^H%^Hhr6yr5bsr5ygv65ev"라는 문자열만 보고
저거 fuckyou인지 ssibal인지 어케 파악을 하겠습니까 ㅋ :p
화면 이미지 파일과 비교해서 잘 생각해 보세요 :)

그리고 security descriptor 를 사용해서 각종 커널 객체를 생성해야 하는데
(이건 보안 솔루션의 기본중의 기본이니 머 오픈했다고 해서 별문제 없는거라 생각되어
걍 얘기합니다. 어차피 가짜 Event를 만들어 내어 Bypass 시도해 보신분들은 다
아는 내용이니까)저 소스에 보면 그냥 마구 만들어내는군요.

더 크리티컬한 얘기가 있지만 차마 다 오픈하지는 못하겠고요
머 다 까먹어서 생각도 안납니다 :)

사용자 삽입 이미지


결론적으로 말해서, 저건 Reverse Engineering을 통해서 Full Project를 만든겁니다.

사실 정말 딱 까놓고 말해서, 한줄 한줄 정성들여 어셈 코드를 분석하는 넘들이라면
그 과정을 몇개월 프로젝트로 잡았을때 원본 소스와 유사한 코드로 만들 수 있습니다.
특히 짱개들 만한 고수 리버서들에겐 더더욱이 가능한 얘기입니다.
실제로도 그런 사례가 많다고 하고요.

GxxxGuard가 초창기 때부터 계속 까보고 뜯어보고 디버깅 해보고 온갖짓을 다해본
짱개넘들의 노력의 결실이라고 생각됩니다.

예전에도 라X나rok 라는 게임의 서버 소스가 공개되어 유출된거라고 다들 의심한 적이 있었는데
역시 그것도 Reverse Engineering을 통해 해커들이 직접 소스로 구현한 것이죠.

그런 소스들을 보면 어셈 코드를 뜯어갖다 붙힌 흔적들이 상당히 많습니다.
어떤 루틴인지 이해는 안되는데 여기를 반드시 타야 처리가 되는 부분,,
그리고 앞으로도 거의 변하지 않는 부분,,,
그런 부분은 괜히 개고생해서 이해&구현하느니 걍 갖다 뜯어 붙히는게 낫죠.
(물론 잦은 코드 변경과 유지보수가 이루어지는 곳은 반드시 구현을 해야겠지만^^)

아무튼 그렇고요,

위 url에 나온 소스도, 이건 드라이버 소스인거 같은데 역시 이것도 리버싱으로 구현한 소스입니다.
예전에 치트엔진 해외 포럼에 리비전 700대의 드라이버 소스가 올라온 적이 있는데
역시 수많은 어셈코드로 뒤범벅이 되어 있었습니다(갖다 뜯어 붙힌)
어차피 드라이버 소스는 비슷비슷한게 많기 때문에, GxxxMon.des보다는 구현하기 쉬웠겠지만 :)

INCX에서 다른 허술한 부분은 많지만 ㅋ 소스 관리는 정말 확실히 하기 때문에
아마 앞으로도 유출될 일은 거의 없을 것 같군요
몇년동안 전 세계에서 뜯어보고 있으니 그런식으로 유추된(유출이 아님 ㅋ) 소스는 계속 등장하겠지만 ^^

아마 새로운 GxxxGuard 버전을 개발해야 할 겁니다. 물론 자기네들이 가장 제일 잘 알겠죠

저 이미지가 예전에 여러 블로그에서 올라왔었는데, 진짜 소스면 올린 사람들에게
문제가 될 소지가 있을까봐 다들 지우고 그랬는데
진짜 소스가 아님을 잘 알고 있기 때문에 전 걍 올려둡니다 ;)


 

Posted by window31


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

댓글을 달아주세요

  1. 2007/07/26 23:47
    댓글 주소 수정/삭제 댓글
    오호라..;;
    모르고 언뜻 봤을땐.. 정말 그럴듯한;;
    • 2007/07/28 22:39
      댓글 주소 수정/삭제
      요즘 뭐하냐 블로그 글좀 써라 ㅋ
  2. 2007/07/27 10:34
    댓글 주소 수정/삭제 댓글
    저도 저 이미지 보고 ...에이 설마 했는데 역시 소스 유출은 아니었군요. ^^
    근데 모르고 보면 진짜 유출된 소스 처럼 .. 굉장히 그럴싸 해보여요 ^^
    • 2007/07/28 22:41
      댓글 주소 수정/삭제
      유출됐다면 서비스가 제대로 되지 않겠죠 ^^
      진짜 그럴싸해 보이죠? ㅋ
  3. Ggil
    2007/07/28 12:25
    댓글 주소 수정/삭제 댓글
    크크. 다필요하~~~다~!!!!
    • 2007/07/28 22:41
      댓글 주소 수정/삭제
      웬일이냐 글을 다 쓰고,
      갖고있는걸로 캡쳐 해서 비교화면 떠봐라 ㅋ
  4. 2008/03/06 16:14
    댓글 주소 수정/삭제 댓글
    비밀댓글 입니다

BLOG main image
by window31

카테고리

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

글 보관함