2009. 6. 20. 18:44



급한 일이 생겨서 클럽박스 파일을 찾아야 하는데, 메이저한 사이트는 어느 하나도 제대로 된 링크를 제공해 주지 않기에 -_-... 구글에서 찾다 보니 CBsearch란걸 발견했다.

프리웨어라고 당차게 주장하길래 다운받아 주었더니, 이상한 사이트에 내 개인정보를 팔아야 쓸 수 있도록 한 애드웨어였다 -_- 게다가 개인정보 팔아봐야 인증 안되는거 같기도 하고...

그래서 짜증도 나고, 어차피 파일 하나만 받고 말텐데 하는 생각에 한번 크랙해보았다.

근데 이거 업데이트도 제대로 안됐는지 검색된 결과에 이미 사라진 박스도 많고 공식 사이트를 들어가봐도 제대로 관리되고 있는거 같지 않아서 일종의 VB 어플리케이션 크래킹 예제 정도의 가치가 있을 것 같다.

준비물
이 글에서는 OllyDbg v1.10, HxD를 이용했다.

어떻게 하나?

먼저, CBsearch를 실행시켜서 프로그램 인증->사이트 가입을 통한 인증을 선택해본다.
당연하지만, 인증하기를 누르면 반항한다. 그러면 이 메시지 박스가 호출되는 위치를 찾아내보자.

OllyDbg를 attach 기능을 통해 ClubboxSearch.exe(CBsearch)에 붙인다. 붙인 직후에는 브레이크포인트에 가 있기 때문에, 오른쪽 버튼을 눌러 컨택스트 메뉴를 띄운 후 View → Module 'ClubboxS' 를 선택해서 ClubboxSearch 본 프로그램으로 이동하자. 이동한 후에는 마찬가지로 컨택스트 메뉴를 띄우고 Search For → Intermodular calls를 선택해 ClubboxSearch.exe 프로그램 외의 함수를 호출하는 것들의 목록을 구해보자.
비베에서 MsgBox 함수를 호출할 때는 rtcMsgBox를 호출하니까, 키보드로 rtcMsgBox를 쳐서 이걸 찾는다. 찾았으면 Enter를 쳐서 호출하는 코드를 찾아 rtcMsgBox의 주소를 알아내자. rtcMsgBox의 주소를 알려면 호출하는 함수에서 다시 한번 Enter를 치면 호출되는 함수의 주소로 이동된다.

그 뒤에는 F2를 눌러 rtcMsgBox의 시작부분에 브레이크포인트를 걸고 F9를 눌러 프로그램을 계속 수행시킨다.

그리고 나서 다시 인증하기를 눌러보면, 아까 브레이크포인트를 건 곳에 딱 멈추는 것을 볼 수 있다.

이제, 이게 호출된 위치를 정확히 알아야 하니까 Ctrl+F9를 눌러 Execute till return, 즉 함수가 끝날 때까지 수행을 시킨다. 그러면 이 함수의 수행 결과는 뜬 메시지박스를 닫아야 뜨니까 생겨난 인증실패 창을 없애면 리턴 명령 위에 포인터가 위치해 있는 것을 볼 수 있다.

이제, 한 스텝만 F8로 수행시켜주자. 그러면 이 메시지박스를 호출한 위치를 알 수 있다.

근데 이 근처를 살펴보면, 적절한 코드가 잘 보이질 않는다. 하지만 이 함수가 인증절차를 수행하는 함수라는건 어렴풋이 짐작이 가능하니까, 일단 마찬가지로 Ctrl+F9를 또 눌러보자.

이상하게 이번엔 F8을 눌러도 바로 호출한 곳으로 이동하지 않지만, 당황하지 말고 F8을 몇 번 더 눌러주면 호출한 곳으로 이동한다.

흠... 비주얼 베이직 런타임이다. 그래도 여기서 호출한건 확실히 맞으니까, 호출하는 명령인 CALL EAX에다가 브레이크포인트를 걸어주자.

이제 다시 F9를 눌러준 뒤에, 인증하기 버튼을 다시 눌러보자. 그러면 방금 건 곳에 다시 멈추는 것을 볼 수 있다. 이때는 F8이 아닌 F7을 눌러서 함수 호출 안으로 들어갈 필요가 있다. 그리고 나서 한 칸씩 F8로 수행하면서 조건 점프를 찾아본다. (JNZ나 JE 같은 것들)

하다보면 이런 부분을 찾을 수 있다. 흠... 서울대 학생 or 졸업생 이시구나.

빙고, 조건 점프를 찾았다. 이렇게 하는 중에 가끔 exception이 발생해서 사람 짜증나게 하는데, 처음엔 Shift+F9를 눌러 넘어가주고 그 뒤에 다시 시도할 때는, 보통 함수 수행시 exception이 나기 때문에, CALL 다음에 브레이크포인트를 건 다음 F9로 넘어가는 시도를 하는게 괜찮다.

여기서 EAX를 보면 -1이다. 0이 아니면 점프하는데, 우리는 아직 인증을 받지 않았기 때문에 저거대로 따라가면 아마도 인증실패가 뜰거다. 그럼 저걸 어찌할까 하니, nop명령으로 바꿔 넘어가지 않도록 해보자. 바꾸려면 Space를 친 다음 nop이라고 치면 된다. 다시 올 때를 대비해 브레이크포인트를 걸고 F9로 계속 수행시켜보자.


ㅋ... 성공이다.

이제 검색해보자.
잘 된다ㅋ

자 이제, 이걸 영구히 저렇게 되게끔 만들어보자.

먼저 ClubboxSearch.exe의 시작 주소를 보면, 일반적인 win32 어플과 마찬가지로 00400000인 것을 쉽게 확인할 수 있다. 아까 nop으로 바꿨던 주소가 00577FAE 였으니까, 시작 주소를 뺀 00177FAE가 실제 파일에서의 offset이다.

실행중인 OllyDbg를 끄기 전에, 근처의 명령들의 기계어 코드를 어디에 메모해놓고 끈다. 왜냐하면, 저 주소가 진짜 nop으로 바꿔야할 명령의 주소인지 확인하기 위해서이다. 끄는 이유는 끄지 않으면 편집이 안된다.

85C0             TEST EAX,EAX
90 NOP ;여섯번
C745 FC 05000000 MOVE DWORD PTR SS:[EBP-4], 5

HxD를 열어 ClubboxSearch.exe를 열어보자. 그리고 Ctrl+G(이동)명령을 이용해서 00177FAE로 이동해보자.

위에 메모한 것과 같이 적혀 있는 곳을 발견했다. 아직 수정되기 전이라 JNZ가 그대로 있는 것을 볼 수 있다. 저 6 byte를 90으로 때우자.

그러면 이제 끝이다. CBsearch 지못미.

'크래킹, 크랙미' 카테고리의 다른 글

AD free NateOn  (0) 2010.05.18
COM Object 생성 추적하기, COMTracer  (0) 2009.10.05
DLL injection with CreateRemoteThread()  (0) 2009.08.01
CBsearch Crack  (15) 2009.06.20
abexcrackme2  (0) 2007.02.17
  • 지나가다 2009.07.14 10:41

    이 프로그램 크랙 좀 만들어 주시면 안될까요..
    하드 지워질때마다 인증해야하니 문제네요..

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.07.26 23:07

      제가 적어둔게 전부입니다;; 저거 따라 하시면 크랙 바로 만들어집니다.

  • 없는국번 2009.08.16 13:17

    이거 아직도 되나요? / 어태치 하니까 어태치가 안되는데 안티디버깅 된거 아닌가요? / 좀 갈켜 주세요

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.08.17 15:35

      어태치가 어떻게 안되는지 말씀해주셔야 알 거 같네요;; 적어도 제가 저 글을 쓰는 시점까지는 아무 문제가 없었거든요ㅎ 그리고 비베로 만든거 같던데 웬만큼 하지 않고는 비베로 안티디버거 달기는 좀;; 복잡하죠;

  • 2009.08.23 00:32

    점프하는 곳을 찾긴 찾았는데 님이 가르쳐준 모듈 부분이 아니고 Kernel32 모듈 부분에서 찾네요.. 이 곳이 맞긴 한 것 같은데.. 그럼 안티디버깅 된건가요?

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.08.23 23:37

      아 -_-;; 좀 스킬이 필요한 부분이 있군요.

      스샷을 확대해서 보시면 왼쪽에 주소가 있습니다. 그 주소로 가셔서 직접 수정하시면 됩니다.

      이 프로그램 절대 안티디버거 안달려 있을 겁니다 -_-

      그리고 kernel32쪽은 절대 아니니까 거긴 건드실 필요 없어요ㅎ 설명된 것은 대부분 비슷한 짓을 또 할 때 참고하라는 뜻으로 달아둔거니까요.

  • 2009.08.26 03:58

    네.. 동일한 번지로 가서 수정하니 되네요.. 단, 인증하기를 한번 더 눌러줘야 하는군요.. 저는 수정만 하면 인증하기 안 눌러도 되는줄 알았어요. 0F 85 5B 05 를 찾아도 되네요.. 두 개가 검색되는 것으로 봐서 두 개의 메시지 박스가 있네요(사이트가입과 이벤트 참여 겠죠?)

    그런데 왜 저는 F7로 쫓아가다보면 005로 시작하는 ClubBoxS 모듈의 번지는 안 보이고 7로 시작하는 kernel32와 MSVBVM60 모듈의 번지만 보일까요? 그리고 저는 attach 한 후부터 인증창 버튼을 누르기 위해 어플리케이션이 활성화되지 않아요.. F9를 눌러도. 클럽박스 검색창이 앞으로 안오네요. 정말 궁금해요... 제가 뭘 건너띈 것인지? 알려주실 수 없나요? 재밌는데..

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.08.28 15:11

      혹시 어태치 하신 뒤에 바로 F7 누르기 시작하셨나요? 어태치하면 브레이크포인트를 걸어서 자동으로 거기서 한번 멈추기 때문에 다시 실행을 시켜주셔야합니다; 단축키가 Ctrl+F9였나 했던거 같네요.

  • ㄷㄷㄷ ㅠ 2009.11.18 09:36

    혹시 '클럽서치' 라는 프로그램도 크랙하는 방법좀 알려주실 수 있나요????

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2009.11.18 23:06

      해 봤으면 알려드리겠지만...;;

      일단 저는 그게 뭐하는 프로그램인지도 모르겠군요;

  • ㄷㄷㄷ ㅠ 2009.11.20 19:42

    클럽서치도 클럽박스 검색 프로그램인데요,
    지금 CBSearch 프로그램 자체에 뭐가 이상이 생겼는지 폴더밖에 검색이 안되서요.... 파일모아라는 프로그램도 크랙을 해서 써봤지만, 서버 업데이트가 안됬는지 이미 존재하지 않는 박스에서 많이 찾더라고요;;;;
    클럽서치도 이제 담당하는 사람이 없어졌는데 이건 아마도 괜찮을거라고 생각해서....... 그런데 이건 어떻게 해야할지모르겠더군요///

  • 행인 2010.04.19 17:53

    뭐 지금도 답변해주실지는 모르겠지만 해주시면 감사하겠습니다.

    F9를 눌러서 찾고 멈추지 않고 게속 Runing 상태가 되는데 왜그런건가요?

    ---------------------------------------------------------
    그리고 나서 다시 인증하기를 눌러보면, 아까 브레이크포인트를 건 곳에 딱 멈추는 것을 볼 수 있다.
    ---------------------------------------------------------
    볼수가 없군요 -ㅅ-;;
    그 다음에 Excute till return 이 활성화 되지 않아요..
    화면 그대로 했는데 말입죠..


    답변 부탁드릴게요

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2010.04.19 22:34

      F9는 찾는 명령이 아니고 계속해서 수행시키는 명령입니다. 그 전에 rtcMsgBox에 F2로 브레이크포인트를 걸어 주셔야 합니다. 브레이크포인트를 안걸었거나, 틀린데 걸었으면 이런 일이 발생할 수 있죠 -_-;;

  • 왕초보 2010.05.01 03:13

    왕초보입니다. 완전기초도 안되있는...ㅠ

    이런쪽에 관심이 있어서 그런데요 이쪽 공부할려면 어떤걸

    공부해야되나요??

    • Favicon of http://blog.gwangyi.kr BlogIcon gwangyi 2010.05.03 13:11

      먼저 C언어와 WIN32 API에 대해서 어느 정도 파시고 어셈블리어를 배우면 조금 할 수 있게 됩니다.

      근데 제일 중요한건 끈기에요. 일주일 정도는 같은 문제 붙잡고 될때까지 매달릴 수 있어야 실력이 늡니다. 그 뒤에 따라오는게 어셈블리, 컴파일러의 특짐, C언어, API 이런거구요.