크래킹 경험이 전혀 없는 분을 위해
급한 일이 생겨서 클럽박스 파일을 찾아야 하는데, 메이저한 사이트는 어느 하나도 제대로 된 링크를 제공해 주지 않기에 -_-... 구글에서 찾다 보니 CBsearch란걸 발견했다.
프리웨어라고 당차게 주장하길래 다운받아 주었더니, 이상한 사이트에 내 개인정보를 팔아야 쓸 수 있도록 한 애드웨어였다 -_- 게다가 개인정보 팔아봐야 인증 안되는거 같기도 하고...
그래서 짜증도 나고, 어차피 파일 하나만 받고 말텐데 하는 생각에 한번 크랙해보았다.
근데 이거 업데이트도 제대로 안됐는지 검색된 결과에 이미 사라진 박스도 많고 공식 사이트를 들어가봐도 제대로 관리되고 있는거 같지 않아서 일종의 VB 어플리케이션 크래킹 예제 정도의 가치가 있을 것 같다.
준비물
- 32bit 윈도우즈용 디버거
- Hex editor
- CBsearch (http://www.cbsearch.co.kr/)
이 글에서는 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으로 바꿔야할 명령의 주소인지 확인하기 위해서이다. 끄는 이유는 끄지 않으면 편집이 안된다.
'크래킹, 크랙미' 카테고리의 다른 글
| AD-free NateOn Patcher, NateOff (1) | 2010/05/19 |
|---|---|
| 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 |
